Динамическое добавление childs в treenode в c # - PullRequest
4 голосов
/ 16 марта 2011

Я хочу динамически добавить несколько дочерних узлов в корневой узел в моем 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 });

Но это ничего не добавит к моему дереву.

Ответы [ 2 ]

16 голосов
/ 16 марта 2011

Вам нужно добавить дочерний узел к родителю, вот пример:

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);
   }
}
0 голосов
/ 16 марта 2011

Я думаю, что проблема в том, что вы не сообщаете mainNode, что child это его дочерние элементы, что-то вроде: mainNode.Children.Add (child) (в блоке for).Вы просто создаете дочерний узел, но ничего не делаете с ним, чтобы он имел какое-либо отношение к TreeView или к mainNode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...