C# 使用treeview将childnode添加到childnode
我想将子节点添加到子节点 我使用下面的代码C# 使用treeview将childnode添加到childnode,c#,winforms,C#,Winforms,我想将子节点添加到子节点 我使用下面的代码 treeView1.Nodes.Add("0"); treeView1.Nodes["0"].Nodes.Add("1"); treeView1.Nodes["1"].Nodes.Add("2"); treeView1.Nodes["2"].Nodes.Add("3"); treeView1.Nodes["3"].Nodes.Add("4"); treeView1.Nodes["1"].Nodes.Add("5"); 我想要的是这个 0 1 2
treeView1.Nodes.Add("0");
treeView1.Nodes["0"].Nodes.Add("1");
treeView1.Nodes["1"].Nodes.Add("2");
treeView1.Nodes["2"].Nodes.Add("3");
treeView1.Nodes["3"].Nodes.Add("4");
treeView1.Nodes["1"].Nodes.Add("5");
我想要的是这个
0
1
2
3
4
5
然而,它总是失败。它找不到父节点。我该怎么办?它不起作用,因为
节点[string]
正在使用指定的键(不是节点的文本)在此集合中查找树节点
TreeNodeCollection.Add
返回插入的TreeNode
。因此,请使用此返回值添加更多子节点:
TreeNode child = treeView1.Nodes.Add("0");
TreeNode child1 = child.Nodes.Add("1");
child1.Nodes.Add("2").Nodes.Add("3").Nodes.Add("4");
child1.Nodes.Add("5");
它不起作用,因为Nodes[string]
正在使用指定的键(不是节点的文本)在此集合中查找TreeNode
TreeNodeCollection.Add
返回插入的TreeNode
。因此,请使用此返回值添加更多子节点:
TreeNode child = treeView1.Nodes.Add("0");
TreeNode child1 = child.Nodes.Add("1");
child1.Nodes.Add("2").Nodes.Add("3").Nodes.Add("4");
child1.Nodes.Add("5");
我怀疑问题在于您使用的是TreeNodeCollection.Add
方法,它是节点的文本而不是键。然后尝试通过密钥填充其他节点
请尝试以下操作:
treeView1.Nodes.Add("0", "0");
treeView1.Nodes["0"].Add("1", "1");
treeView1.Nodes["0"].Nodes["1"].Add("2", "2");
我怀疑问题在于您使用的是TreeNodeCollection.Add
方法,它是节点的文本而不是键。然后尝试通过密钥填充其他节点
请尝试以下操作:
treeView1.Nodes.Add("0", "0");
treeView1.Nodes["0"].Add("1", "1");
treeView1.Nodes["0"].Nodes["1"].Add("2", "2");
您遇到的问题是treeView1控件的节点
集合不是树中所有节点的列表-它只是顶级节点的列表。树节点可以包含子节点列表,这使得它具有层次结构。因此,要获得您在问题中定义的树结构,您需要执行以下操作:
private void AddTreeNodes()
{
// Create the root node.
TreeNode node = treeView1.Nodes.Add("0");
// the root node has only one child node (1), so we will reuse the node object
node = node.Nodes.Add("1");
// Now, the node is the parent of two nodes (2 and 5).
// We will want to keep track of node 2 because it has child nodes.
TreeNode anotherNode = node.Nodes.Add("2");
// Since node 5 doesn't have any child nodes, we don't need to keep track of it in this example.
node.Nodes.Add("5");
// Now, we need to make the child node of node 2. (Specifically, node 3).
node = anotherNode.Nodes.Add("3");
// And finally add the child node of node 3.
node.Nodes.Add("4");
}
private void AddTreeNodes()
{
treeView1.Nodes.Add("0");
treeView1.Nodes[0].Nodes.Add("1");
treeView1.Nodes[0].Nodes[0].Nodes.Add("2");
treeView1.Nodes[0].Nodes[0].Nodes.Add("5");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("3");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("4");
}
您也可以这样做:
private void AddTreeNodes()
{
// Create the root node.
TreeNode node = treeView1.Nodes.Add("0");
// the root node has only one child node (1), so we will reuse the node object
node = node.Nodes.Add("1");
// Now, the node is the parent of two nodes (2 and 5).
// We will want to keep track of node 2 because it has child nodes.
TreeNode anotherNode = node.Nodes.Add("2");
// Since node 5 doesn't have any child nodes, we don't need to keep track of it in this example.
node.Nodes.Add("5");
// Now, we need to make the child node of node 2. (Specifically, node 3).
node = anotherNode.Nodes.Add("3");
// And finally add the child node of node 3.
node.Nodes.Add("4");
}
private void AddTreeNodes()
{
treeView1.Nodes.Add("0");
treeView1.Nodes[0].Nodes.Add("1");
treeView1.Nodes[0].Nodes[0].Nodes.Add("2");
treeView1.Nodes[0].Nodes[0].Nodes.Add("5");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("3");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("4");
}
现在,我知道代码很难看,但从中得到的主要想法是:
TreeView
控件包含TreeNode
对象(节点
)的列表。此列表不是树中所有节点的列表,只是控件本身的直接子节点的列表
必须将父节点下存在的所有子节点添加到父节点的TreeNode
对象列表中
每个TreeNode
对象都包含其子对象的TreeNode
对象列表
将TreeNode
添加到另一个节点或TreeView
控件本身时,将返回对新TreeNode
对象的引用
TreeNode的索引是它相对于其所在列表的索引,而不是相对于整个层次结构的索引
TreeNode
对象具有多个属性,有助于导航树PrevNode
和NextNode
获取上一个或下一个同级树节点(如果存在)。和Parent
获取当前节点的父节点TreeNode
您遇到的问题是treeView1控件的节点
集合不是树中所有节点的列表-它只是顶级节点的列表。树节点可以包含子节点列表,这使得它具有层次结构。因此,要获得您在问题中定义的树结构,您需要执行以下操作:
private void AddTreeNodes()
{
// Create the root node.
TreeNode node = treeView1.Nodes.Add("0");
// the root node has only one child node (1), so we will reuse the node object
node = node.Nodes.Add("1");
// Now, the node is the parent of two nodes (2 and 5).
// We will want to keep track of node 2 because it has child nodes.
TreeNode anotherNode = node.Nodes.Add("2");
// Since node 5 doesn't have any child nodes, we don't need to keep track of it in this example.
node.Nodes.Add("5");
// Now, we need to make the child node of node 2. (Specifically, node 3).
node = anotherNode.Nodes.Add("3");
// And finally add the child node of node 3.
node.Nodes.Add("4");
}
private void AddTreeNodes()
{
treeView1.Nodes.Add("0");
treeView1.Nodes[0].Nodes.Add("1");
treeView1.Nodes[0].Nodes[0].Nodes.Add("2");
treeView1.Nodes[0].Nodes[0].Nodes.Add("5");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("3");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("4");
}
您也可以这样做:
private void AddTreeNodes()
{
// Create the root node.
TreeNode node = treeView1.Nodes.Add("0");
// the root node has only one child node (1), so we will reuse the node object
node = node.Nodes.Add("1");
// Now, the node is the parent of two nodes (2 and 5).
// We will want to keep track of node 2 because it has child nodes.
TreeNode anotherNode = node.Nodes.Add("2");
// Since node 5 doesn't have any child nodes, we don't need to keep track of it in this example.
node.Nodes.Add("5");
// Now, we need to make the child node of node 2. (Specifically, node 3).
node = anotherNode.Nodes.Add("3");
// And finally add the child node of node 3.
node.Nodes.Add("4");
}
private void AddTreeNodes()
{
treeView1.Nodes.Add("0");
treeView1.Nodes[0].Nodes.Add("1");
treeView1.Nodes[0].Nodes[0].Nodes.Add("2");
treeView1.Nodes[0].Nodes[0].Nodes.Add("5");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("3");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("4");
}
现在,我知道代码很难看,但从中得到的主要想法是:
TreeView
控件包含TreeNode
对象(节点
)的列表。此列表不是树中所有节点的列表,只是控件本身的直接子节点的列表
必须将父节点下存在的所有子节点添加到父节点的TreeNode
对象列表中
每个TreeNode
对象都包含其子对象的TreeNode
对象列表
将TreeNode
添加到另一个节点或TreeView
控件本身时,将返回对新TreeNode
对象的引用
TreeNode的索引是它相对于其所在列表的索引,而不是相对于整个层次结构的索引
TreeNode
对象具有多个属性,有助于导航树PrevNode
和NextNode
获取上一个或下一个同级树节点(如果存在)。和Parent
获取当前节点的父节点TreeNode