0

I'm a beginner in C# and have a simple question about TreeView.

I want to do something like this:

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

I have this:

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

But it just yields something like this:

> -Root
>     -child1

I want:

  • To have a child of a child.
  • To create 10 TreeNodes in a for statement.

With different names like: root1, root2, root3, etc.

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

2 回答 2

1

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

child.Text = des[j];

root.Nodes.Add(child);

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

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

哈希表 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 代替泛型版本。

于 2013-08-01T15:17:47.827 回答
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
于 2013-08-01T15:07:33.560 回答