добавить узел к определенному дочернему узлу - PullRequest
3 голосов
/ 08 декабря 2010

Я могу добавить узел в метод добавления дерева. Но я хочу добавить узел к определенному дочернему узлу. Например, хотите добавить узел к node5

|___node0
|___node1     
|     |___node3
|     |___node4
|           |___node5
|___node2

Как я могу это сделать? Спасибо.

Ответы [ 4 ]

5 голосов
/ 08 декабря 2010
TreeNode[] tn = treeView.Nodes[0].Nodes.Find(search.Text, true);
if (tn.Count>0) 
   tn[0].Nodes.Add(node);
else
   //handle node not found
3 голосов
/ 08 декабря 2010

Если у вас есть ссылка на дочерний узел, вы можете просто получить доступ к его коллекции узлов и добавить новый дочерний элемент в свою коллекцию, как показано ниже

node5.Nodes.Add(New TreeNode("temp"));
1 голос
/ 08 декабря 2010

Базовый рекурсивный искатель узлов дерева, макушки моей головы.Если вам нужен только поиск по ключу, ответ по weismat является самым простым, однако, если вам нужно искать по данным на узлах, вы должны рассмотреть это решение, так как вы можете заменить поиск по имени на то, что вы хотели бы найти.

private TreeNode FindNode(TreeNode root, String name)
{
    foreach (TreeNode node in root.Nodes)
    {
        if (node.Nodes.Count > 0)
            return FindNode(root, name);
        if (node.Name == name)
            return node;
    }
    return null;
}
0 голосов
/ 09 марта 2013

Уильям был прав, но метод должен выглядеть следующим образом:

private TreeNode FindNode(TreeNode root, String name)
        {
            foreach (TreeNode node in root.Nodes)
            {
                if (node.Name == name)
                    return node;
                else
                {
                    if (node.Nodes.Count > 0)
                        return FindNode(node, name);
                }
            }
            return null;
        }

проверил это и работает просто отлично,

Приветствия!

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