salut la team
voila un pti soucis que je n'arrive pas trouver ni avec google, ni avec msdn.
Je rempli une treeviex (TV) puis je modifie son contenue, ensuite je la reFill pour mise à jour.
Mais voila je n'arrive pas à archiver ou plutot à retrouver le node modifié
j'aimerai que la TV se repositionne sur :
If Not nodeEnCours Is Nothing Then .SelectedNode = nodeEnCours
j'ai essayé :
' mémoire pour la selection du TV en cours
Dim nodeSection As New TreeNode
avec un
Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
'archive le node selectionné en cours
nodeSection = e.Node
qu'est ce que j'ai pas pigé là ????
@ vous lire, et d'avance merci pour votre aide, cordialement @dn.
Bien visiblement y a pas trop d'autre moyen que de tester node par node.
Voici ce que je fais pour que cela marche :
j'archive le nom du node selectionné dans un string, puis à chaque ajout de node je test si le nom de ce node est égale à l'archive. Si oui je le selectionne.
vu comme cela c'est simple :
TV.selectedNode = TV.nodes.Add("")
Mais dés que les branches augmente cela commence à faire une usine à gaz
dim cetteLigne as String = "PourExemple"
if archive = cetteLigne.nom then
.SelectedNode = .Nodes(i).Nodes(j).Nodes.Add(cetteLigne)
else .Nodes(i).Nodes(j).Nodes.Add(cetteLigne)
Considérant l'imbrication des boucles pour chaque niveau de nodes,puis pour chaque node cela fait un paquet d'itération !
Bien sûr l'idéal est de concevoir son code sans avoir besoin de re-remplir la TV à chaque modif d'un node
Bien sûr j'ai essaye d'autre truc du style fullpath que j'utilse ailleurs mais faire un boucle aussi grosse pour retrouver le node complet me parait un mauvais codage !
svp une ptite piste de recherche au moins me serais utile
bonjour Banana, ton principe fonctionne que pour un niveau non ?
En effet l'id est un integer et défini le premier niveau de la treeview; Bien sûr je pourrais le faire pour les trois niveaux avec trois Id, mais j'aimerai essayer un truc comme ça avant, ou au moins comprendre pourquoi cela ne marche pas :
Déclaration début de module:
'memoire du node en cours
Dim nodeSelection As TreeNode
Utilisation de la mémoire dans les Sub qui vont appeller le refill de la TV
' mémorise la selection du node
nodeSelection = TreeView1.SelectedNode
Enfin dans la sub refill, aprés un TV.clear et le remplissage TV.nodes.add(), TV.nodes(index).nodes.add(), TV.nodes(index).nodes(index2).nodes.add() j'écris :