2011-09-22 5 views
1

J'ai un TreeView et je veux en retirer 2 nœuds en même temps.Comment supprimer deux TreeNode en même temps

node.Remove(); 

Cela supprimera le nœud, mais après ce code, le nœud suivant sera automatiquement sélectionné. Y a-t-il un moyen d'empêcher cela? Ou meilleure solution pour moi sera la suppression du prochain nœud juste après que son nœud perméable est supprimé.

Vous pouvez demander pourquoi. Dans mon programme, chaque paire de nœuds est nécessaire pour faire quelque chose. Donc, si je supprime l'un d'entre eux, le contrôle TreeView passera au membre suivant de cette paire et parce que le dernier est supprimé, tous mes codes vont mal car il ne peut plus trouver ce nœud.

S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations.

+0

pourquoi ne pas supprimer le second (non sélectionné) en premier? – slawekwin

+0

comment puis-je supprimer le noeud qui est juste après le noeud sélectionné? Y a-t-il une indexation qui peut aider? Je voudrais faire quelque chose comme le noeud [-1] .Remove() !! –

+0

voir: http://msdn.microsoft.com/fr-fr/library/system.windows.forms.treenodecollection.aspx sans voir comment vous déclarez et utilisez treeview Je ne peux pas aider plus ... – slawekwin

Répondre

1

Ok, j'ai eu la chance ... Mes textes de nœud se terminent en « _1 » et « _2 » pour chaque paire de noeuds donc je suis venu avec cette soloution:

  if (fileText.EndsWith("_1")) 
      { 
       selectedFile.NextNode.Remove(); 
       selectedFile.Remove(); 
      } 
      else 
      { 
       selectedFile.PrevNode.Remove(); 
       selectedFile.Remove(); 
      } 
+1

si ce n'était pas comme ça vous auriez pu utiliser ex. parentNode.Nodes.indexOf (selectedNode); // éventuellement avec% 2 – slawekwin

1

Avec vue arbre simple et un menu contextuel simple cela fonctionne pour moi

if (tvwACH.SelectedNode.Text == "Child") 
{ 
    tvwACH.SelectedNode.NextNode.Remove(); 
    tvwACH.SelectedNode.Remove(); 
} 
Questions connexes