2010-12-08 31 views

ответ

1

Basic рекурсивного поисковика узла дерева, в верхней части моего глава. Если вам нужен только поиск по ключевому слову, ответ на 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

Я не понял. Как я использую этот метод? И что этот метод дает мне? Пожалуйста, помогите мне с подробностями. Спасибо большое. – Tavousi 2010-12-08 16:13:17

4
TreeNode[] tn = treeView.Nodes[0].Nodes.Find(search.Text, true); 
if (tn.Count>0) 
    tn[0].Add(nod); 
else 
    //handle node not found 
3

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

node5.Nodes.Add(New TreeNode("temp")); 
0

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

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; 
     } 

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

Ура!

Смежные вопросы