在c#中动态地将子项添加到treenode

时间:2011-03-16 14:02:23

标签: c# treeview

我想动态地将一些子节点添加到TreeView中的根节点。我有一些Array字符串{"john", "sean", "edwin"},但它可以更大或更小。

我有这样一个根:

        //Main Node (root)
        string newNodeText = "Family 1"
        TreeNode mainNode = new TreeNode(newNodeText, new TreeNode[] { /*HOW TO ADD DYNAMIC CHILDREN FROM ARRAY HERE?!?*/ });
        mainNode.Name = "root";
        mainNode.Tag = "Family 1;

我想用我的孩子们的名字来做这样的事情:

        foreach (string item in xml.GetTestNames()) //xml.GetTestNames will return a string array of childs
        {
            TreeNode child = new TreeNode();

            child.Name = item;
            child.Text = item;
            child.Tag = "Child";
            child.NodeFont = new Font(listView1.Font, FontStyle.Regular);
        }

但显然它不起作用。 提示:我的子阵列中有多少元素!!!!

编辑1:

我正在尝试:

        //Make childs
        TreeNode[] tree = new TreeNode[xml.GetTestsNumber()];
        int i = 0;

        foreach (string item in xml.GetTestNames())
        {
            textBox1.AppendText(item);
            tree[i].Name = item;
            tree[i].Text = item;
            tree[i].Tag = "Child";
            tree[i].NodeFont = new Font(listView1.Font, FontStyle.Regular);

            i++;
        }

        //Main Node (root)
        string newNodeText = xml.FileInfo("fileDeviceName") + " [" + fileName + "]"; //Text of a root node will have name of device also
        TreeNode mainNode = new TreeNode(newNodeText, tree);
        mainNode.Name = "root";
        mainNode.Tag = pathToFile;


        //Add the main node and its child to treeView
        treeViewFiles.Nodes.AddRange(new TreeNode[] { mainNode });

但是这对我的treeView没有任何补充。

2 个答案:

答案 0 :(得分:15)

您需要将子节点附加到父节点,这是一个示例:

TreeView myTreeView = new TreeView();
myTreeView.Nodes.Clear();
foreach (string parentText in xml.parent)
{
   TreeNode parent = new TreeNode();
   parent.Text = parentText;
   myTreeView.Nodes.Add(treeNodeDivisions);

   foreach (string childText in xml.child)
   {
      TreeNode child = new TreeNode();
      child.Text = childText;
      parent.Nodes.Add(child);
   }
}

答案 1 :(得分:0)

我认为问题是你没有通知mainNode孩子是它的孩子,比如:mainNode.Children.Add(child)(在for块中)。您只需创建子节点,但不要对它进行任何操作,因为它与TreeView或mainNode有任何关系。