2010-12-08 7 views
0

Je peux ajouter un nœud à une méthode treeview add. Mais je souhaite ajouter un nœud à un nœud enfant spécifique. Par exemple voulez ajouter un nœud à Node5Ajouter un nœud à un nœud enfant spécifique

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

Comment je peux le faire? Merci.

Répondre

1

searcher nœud de l'arbre récursif de base, du haut de ma tête. Si vous avez seulement besoin de rechercher par clé, la réponse de weismat est la plus simple, cependant si vous avez besoin de rechercher par les données sur les noeuds, vous devriez considérer cette solution comme vous pouvez remplacer la recherche par nom avec ce que vous aimeriez trouver.

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

Je n'ai pas compris.Comment j'utilise cette méthode? Et ce que cette méthode me donne? S'il vous plaît aidez-moi avec des détails.Merci beaucoup. – Tavousi

+1

TreeNode node = FindNode (treeView1.Nodes [0], "node5") –

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

Si vous avez la référence de nœud enfant, vous pouvez simplement accéder à ses nœuds collection et ajouter un nouvel enfant dans sa collection comme indiqué ci-dessous

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

William avait raison, mais la méthode devrait ressembler à ceci:

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

testé cela et fonctionne très bien,

Cheers!

Questions connexes