C#TreeView以编程方式为GrandChildren添加子节点等等

时间:2015-02-10 15:58:22

标签: c# winforms treeview

我目前正在开发一个包含TreeView的WinForm。 不知怎的,我无法正确填充TreeView。

提高可见度:

Parent Device -
              |-ChildDevice1-
              |             |-GrandChild1 (not connected with ChildDevice2)
              |-ChildDevice2

AnotherParentDevice...

and so on...
(this is how it should look like)

我试图给设备一个索引号,以识别父母和孩子。

treeView1.Nodes.Add(new TreeNode("Parent"));
treeView1.Nodes[parentid].Nodes.Add(new TreeNode("Child"));
treeView1.Nodes[parentid].Nodes[childid].Nodes.Add(new TreeNode("GrandChild"));

我可以使用上面的解决方案,但设备可以有无限的孩子​​,我不能像:

treeView1.Nodes[parentid].Nodes[childid].Nodes[GrandChild1].Nodes[GrandChild2].Nodes.Add(new TreeNode("GrandChild2"));

我想你们都明白了。

编辑: 我正在使用的方法是通过注册表,并返回USB设备描述,如果设备有任何子项,该方法再次进入并返回子项(等等)。这就是我需要树的原因

PS:抱歉我的英文不好。

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。

由于我使用的是递归方法,因此不必为父母提供id。因为他们已经有了一个。

我的代码如下所示:

    //Generate variables for the recursive Method
    TreeView tree = treeView1;
    TreeNode treeNode;

    //You set the current Node to be the Parent
    treeNode = tree.Nodes.Add("rootDevice");

    //Now if the root device has a child
    treeNode = tree.Nodes.Add("childDevice");

    // If the child has a child
    treeNode = tree.Nodes.Add("grandChildDevice");

等等。 方法将跳回并使用下一个根设备作为父。这很简单。