2015-02-10 103 views
-1

我目前正在研究一個包含TreeView的WinForm。 不知何故,我無法正確填充TreeView。C#TreeView以編程方式向GrandChildren添加子節點等等

更多的知名度:

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

使用收集集合等等和**遞歸**來填充這樣的樹。集合可以是任何東西('IList','IEnumerable',...)。 – Sinatr 2015-02-10 16:00:22

+1

你的輸入數據是什麼樣的? – Servy 2015-02-10 16:04:19

+0

Sinatr,謝謝你的回答我會試試看。 @Servy,輸入總是一個字符串。我正在使用的方法是通過註冊表,並返回USB設備描述,如果該設備有任何孩子,該方法再次進入並給孩子。這就是爲什麼我需要一棵樹。 – Megajin 2015-02-11 09:02:09

回答

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"); 

等。 該方法將跳回並使用下一個根設備作爲父項。這很簡單。

相關問題