如何添加孩子的孩子?

时间:2013-08-01 14:59:55

标签: c# treeview

我是C#的初学者,对TreeView有一个简单的问题。

我想做这样的事情:

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

我有这个:

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

但它只是产生这样的东西:

> -Root
>     -child1

我想:

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

使用不同的名称:root1,root2,root3等

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

2 个答案:

答案 0 :(得分:1)

您需要将TreeNode添加到子节点的Nodes集合中,而不是根节点。

child.Text = des[j];

root.Nodes.Add(child);

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

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

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

如果您对Generics感到满意,可以使用System.Collections.Generic.Dictionary代替通用版本。

答案 1 :(得分: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
        •   
      •   
    •   
  •