Retrouver le node selectionné aprés un nouvezau fill d'un treeview

Résolu
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 21 juin 2010 à 19:10
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 22 juin 2010 à 11:37
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.

5 réponses

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
22 juin 2010 à 11:35
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
3
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
21 juin 2010 à 20:21
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

bonne nuitée les sachants.
0
Utilisateur anonyme
21 juin 2010 à 20:55
Bonsoir,
Pour récupérer l'index de ton node
id = TreeView1.SelectedNode.Index


puis pour le réafficher après ton refill

TreeView1.SelectedNode = TreeView1.Nodes.Item(id)
TreeView1.Select()


Bonne soirée.
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
22 juin 2010 à 07:49
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 :
            TV.SelectedNode = nodeSelection
            TV.Select()

            TV.EndUpdate()
            TV.Visible = True


Je fini par me demander si cela ne marche pas simplement parceque tous les nodes ont été recréé ????

A vous lire, cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
22 juin 2010 à 11:37
PS : j'ai fait la recherche avec le nom du node, mais on peut aussi le faire avec son Index, comme le montre banana !
0
Rejoignez-nous