2013-08-01 106 views
0

我是C#的初学者,对TreeView有一个简单的问题。如何添加孩子的孩子?

我想要做这样的事情:

> -Root 
> -child1 
>  -child2 
>   -child3 
>     -.... 

我有这样的:

child.Text = des[j]; 
root.Nodes.Add(child); 

,但它只是产生了这样的事情:

> -Root 
>  -child1 

我想:

  • 有一个孩子的孩子。
  • 在for语句中创建10个TreeNode。

有了这样不同的名称:目录root1,根-2,root3等

for (i = 0; i < 10; i++) 
{ 
    TreeNode root = new TreeNode(); 
} 

回答

1

您需要的树节点添加到节点集合的孩子,而不是根本。

child.Text = des[j]; 

root.Nodes.Add(child); 

TreeNode NextChild = new TreeNode(); 
NextChild.Text = "something"; 
child.Nodes.Add(NextChild); 

对于第二个问题,您需要将这些treenodes存储在某种数据结构中。如果你想命名每一个,哈希表将是一个很好的选择。

Hashtable myHT = new Hashtable();

for (int i = 0; i < 10; i++) 

{ 

    TreeNode root = new TreeNode(); 
    myHT.Add("Root" + i, root); 

} 

然后,您可以访问他们喜欢的,

TreeNode myRoot = (TreeNode)myHT["Root1"]; 

如果您习惯使用泛型可以使用System.Collections.Generic.Dictionary而不是为一个通用版本。

0

你只需要跟踪当前节点和子的插入。

  • i = 0,当前节点值是根节点。
  • i > 0,当前节点值是插入的最后一个子节点。

然后,你可以尝试这样的事情......

TreeNode current = new TreeNode(); // Root node. 
current.Text = string.Format("Root"); 
for (int i = 0; i < 10; i++) 
{ 
    TreeNode child = new TreeNode(); 
    child.Text = string.Format("Child: {0}", i); 
    current.Nodes.Add(child); 
    current = child; 
} 

这段代码的结果将是:

    • 儿童:0
      • 小孩:1
        • 儿童:2