C# 检查节点是否存在并添加子节点
因为不可能使节点不可见,所以我决定在需要它们之前不创建它们 我的代码:C# 检查节点是否存在并添加子节点,c#,visual-studio-2010,C#,Visual Studio 2010,因为不可能使节点不可见,所以我决定在需要它们之前不创建它们 我的代码: if(comboBox3.Text == "Books") { if (treeView1.Nodes.ContainsKey("Books") == true) { treeView1.Nodes["Books"].Nodes.Add(textBox1.Text); } else if (treeView1.Nodes.ContainsKey("Books") == false)
if(comboBox3.Text == "Books")
{
if (treeView1.Nodes.ContainsKey("Books") == true)
{
treeView1.Nodes["Books"].Nodes.Add(textBox1.Text);
}
else if (treeView1.Nodes.ContainsKey("Books") == false)
{
treeView1.Nodes.Add("Books");
treeView1.Nodes["Books"].Nodes.Add(textBox1.Text);
}
}
在组合框中
有几个类别。这是负责“书籍”的代码。在文本框中,我正在写标题,点击一个按钮后,这个代码开始工作。首先,它检查根节点“Books”是否存在。如果是,它只需将文本框中的任何内容添加为子节点。但如果不是,它将创建名为“Books”的根节点,然后添加一个子节点。我在这行中遇到错误:
treeView1.Nodes["Books"].Nodes.Add(textBox1.Text);
错误:
NullReferenceException was unhandled
还有,这是否可能改变索引号,即,我想做5个类别,但我也想有具体的顺序,比如说1.房子2.汽车3.书籍4.电话5.自行车,我想先添加书籍,然后添加汽车,再添加自行车。索引号有什么需要更改的吗?在哪一部分会出现错误?在if中还是在else中 此外,您的代码可能更简单:
if(comboBox3.Text == "Books")
{
if (!treeView1.Nodes.ContainsKey("Books"))
treeView1.Nodes.Add("Books");
treeView1.Nodes["Books"].Nodes.Add(textBox1.Text);
}
编辑:
添加TreeNode时,必须提供节点的名称。只有这样,才能通过名称访问集合来获取集合的节点。如果不设置名称,仍然可以使用索引访问集合。但在本例中,您使用的是字符串键,因此还必须为Books树节点提供名称:
if(comboBox3.Text == "Books")
{
if (!treeView1.Nodes.ContainsKey("Books"))
{
TreeNode booksNode = new TreeNode("Books");
booksNode.Name = "Books";
treeView1.Nodes.Add(booksNode);
}
treeView1.Nodes["Books"].Nodes.Add(textBox1.Text);
}
同样简短(但可能可读性较差)的是:
if(comboBox3.Text == "Books")
{
if (!treeView1.Nodes.ContainsKey("Books"))
treeView1.Nodes.Add(new TreeNode("Books") { Name = "Books" });
treeView1.Nodes["Books"].Nodes.Add(textBox1.Text);
}
这不是必需的
else if (treeView1.Nodes.ContainsKey("Books") == false)
您只需替换为else
对于添加基于索引,我想你可以检查下面的链接
ContainsKey
未搜索每个节点的子节点。它只搜索您提供的根节点。为了深入检查包含,显然必须使用treeview.Nodes.Find(Key,true)
。有人知道其他解决方案吗?无法隐藏节点??父节点将是可折叠的,对吗?我的意思是使节点不可见。参数不必是TreeNode对象!如果将字符串传递给该方法,则将在node-collection的末尾添加一个新的TreeNode,其中指定的字符串为文本。感谢您的帮助,现在代码看起来更好了。我在其他部分出错了。非常感谢,效果很好。您的代码还解决了另一个问题,即复制“Books”根节点。