Retrouver le node selectionné aprés un nouvezau fill d'un treeview [Résolu]

Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Dernière intervention
28 septembre 2013
- 21 juin 2010 à 19:10 - Dernière réponse :
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
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.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Dernière intervention
28 septembre 2013
22 juin 2010 à 11:35
3
Merci
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

Merci Adn56 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Dernière intervention
28 septembre 2013
21 juin 2010 à 20:21
0
Merci
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.
Commenter la réponse de Adn56
21 juin 2010 à 20:55
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Dernière intervention
28 septembre 2013
22 juin 2010 à 07:49
0
Merci
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.
Commenter la réponse de Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Dernière intervention
28 septembre 2013
22 juin 2010 à 11:37
0
Merci
PS : j'ai fait la recherche avec le nom du node, mais on peut aussi le faire avec son Index, comme le montre banana !
Commenter la réponse de Adn56

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.