Рекурсивное добавление ChildNode в родительский узел - PullRequest
1 голос
/ 08 сентября 2011

У меня есть проблема, которую я не могу решить.

Я создаю TreeView динамически, и у меня есть упорядоченный список. Я хочу, чтобы TreeView строил таким образом:

Node1

_Node2

__ Node3

__ _Node..N

Мой код выглядит следующим образом:

        TreeNode tn = new TreeNode();

        for (int i = 0; i < EmployeesReportingLine.Count; i++ )
        {
            Employee ep = EmployeesReportingLine[i];

            while (tn.ChildNodes.Count > 0)
                tn = tn.ChildNodes[0];

            TreeNode temp = new TreeNode(ep.FullName);
            if (i > 0)
                tn.ChildNodes.Add(temp);
            else
                tn = temp;
        }

        TreeView1.Nodes.Add(tn);

Я сделал несколько других попыток использования рекурсивных функций, но приведенный выше фрагмент был моей лучшей попыткой.

Заранее спасибо.

1 Ответ

2 голосов
/ 08 сентября 2011
    private void addNode(TreeNodeCollection nodes, TreeNode newnode) {
        if (nodes.Count == 0) nodes.Add(newnode);
        else addNode(nodes[0].Nodes, newnode);
    }

Или:

    private void addNode2(TreeNode start, TreeNode newnode) {
        if (start.Nodes.Count == 0) start.Nodes.Add(newnode);
        else addNode2(start.Nodes[0], newnode);
    }
...