Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当您尝试按关键字访问winforms树视图,但该关键字不存在时会发生什么情况?_C#_Winforms_Treeview - Fatal编程技术网

C# 当您尝试按关键字访问winforms树视图,但该关键字不存在时会发生什么情况?

C# 当您尝试按关键字访问winforms树视图,但该关键字不存在时会发生什么情况?,c#,winforms,treeview,C#,Winforms,Treeview,我正在编写一个应用程序,其中我用数据库的模式填写一个树状视图。我通过迭代GetSchema中的每个表名和类型来实现。然后,根据数据类型和名称,选择要向其中添加新项的父节点。有时该项在treenode中不存在(取决于用户设置,某些表可能已添加或未添加为treeview的节点),这很好,在这种情况下,我希望: A) 要引发的异常,因此我知道它无法找到请求的节点。或B)为失败的访问器返回null 我的代码片段(经过高度修改): TreeNode parent = null; if( tableName

我正在编写一个应用程序,其中我用数据库的模式填写一个树状视图。我通过迭代GetSchema中的每个表名和类型来实现。然后,根据数据类型和名称,选择要向其中添加新项的父节点。有时该项在treenode中不存在(取决于用户设置,某些表可能已添加或未添加为treeview的节点),这很好,在这种情况下,我希望:

A) 要引发的异常,因此我知道它无法找到请求的节点。或B)为失败的访问器返回null

我的代码片段(经过高度修改):

TreeNode parent = null;
if( tableName.StartsWith("prefix") )
{
    parent = tablesNode.Nodes["Node Name which might not exist"];
}

if (parent == null && IgnorePrefixedTables)
{
    continue;
}
else if (parent == null)
{
    throw Exception();
}
....<More Code For Filling Out that node>...

该代码依赖于位于Form1上的textBox1。(P.S.PL为波兰语)。显然treeView1也找不到World EN,这让我觉得我真的不明白treeView是如何工作的。在y=treeView1.Nodes[“World SP”]上永远不会显示第一个消息框和断点;无法中断(因为该行代码从未被调用)。

避免使用异常来控制程序流。使用TreeViewCollection.IndexOfKey()方法


当在表单的OnLoad()方法或Load事件中引发异常并附加调试器时,64位操作系统上会出现一个奇怪的错误。它未经通知就被吞下了。听起来像是一场比赛。解决方法是将平台目标设置为x86。

在上述情况下,我手动抛出的异常是真正的异常。如中所示,如果发生这种情况,程序需要返回给我进行修复。
namespace TestZone
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            treeView1.Nodes.Add("Hello", "Hello");
            var x = treeView1.Nodes["Hello"];
            x.Nodes.Add("World-PL", "Swiat");
            x.Nodes.Add("World-EN", "World");
            var y = treeView1.Nodes["World-EN"];
            MessageBox.Show(y.Text);
            y = treeView1.Nodes["World-SP"];
            MessageBox.Show(y.Text);
            y = treeView1.Nodes["World-PL"];
            MessageBox.Show(y.Text);
        }
    }
}