Bonjour,
je n'arrive pas à trouver la méthode pour sélectionner un noeud dans un treeview.
J'ai tenté sans succès :
Cette propriété est en lecture seule...Code:treeview1.SelectedNode = myNode
Merci d'avance pour votre aide.
Version imprimable
Bonjour,
je n'arrive pas à trouver la méthode pour sélectionner un noeud dans un treeview.
J'ai tenté sans succès :
Cette propriété est en lecture seule...Code:treeview1.SelectedNode = myNode
Merci d'avance pour votre aide.
Que veux tu faire avec le noeud que tu souhaites récupérer ?
Veux tu effectuer un traitement dessus, récupérer sa valeur, sa profondeur, ect.
Dis en un peu plus car plusieurs solutions existent
En gros, j'ai un treeview avec une liste d'utilisateur.
- Sur clic du bouton ajout, je déselectionne le noeud éventuellement sélectionné.
- Puis après avoir remplit et validé un petit formulaire, je créé le nouveau noeud.
- Je veux ensuite le sélectionner.
C'est cette dernière étape qui me pose problème.
La propriété SelectedNode est effectivement en ReadOnly, il faut donc que tu te balade dans les items de la collection de nodes de ton treeview pour ensuite utiliser la méthode select du noeud recherché.
Avec quelque chose comme ca tu devrais y parvenir:
TreeView.Nodes.Item(i).Select()
Le problème est de récupérer l'index de ton noeud.
Si tu l'ajoutes à la fin du treeview, pas trop de problème, tu comptes les noeuds à l'aide d'un Nodes.count et tu trouveras le nombre de noeuds existants.
Si tu l'ajoutes au milieu, il va falloir bucher un peu plus pour récupérer le positionnement de ce noeud.
Ok donc je suis bon pour me taper une petite fonction récursif pour récupérer l'index du noeud qui m'intéresse, et le sélectionner à l'aide de .Select
Merci.
Ouais, y'a des chances...
Voila la fonction récursive que j'avais fait pour un site web.
Je pense l'avoir assez tester pour dire qu'elle marche pas trop mal.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 ''' <summary> ''' Recherche une valeur dans un arbre et expand l'arbre jusqu'a cette valeur ''' </summary> ''' <param name="pnode">Arbre (treeview) ou Node (treenode) sur lequel s'effectue la recherche</param> ''' <param name="pId">id de l'élément à rechercher</param> ''' <returns>true si la valeur a été trouvé, sinon false</returns> ''' <remarks></remarks> Public Function RechercherNode(ByRef pnode As Object, ByVal pId As Integer) As Boolean Dim element As New c_element(cnxBDD) Dim node As New TreeNode Dim tv As New TreeView 'On teste si on a à faire à une treenode ou à un treeview If pnode.GetType.ToString = node.GetType.ToString Then For Each node In CType(pnode, TreeNode).ChildNodes If node.Value = pId Then node.Select() Return True Else If RechercherNode(node, pId) = True Then CType(pnode, TreeNode).Expand() Return True End If End If Next ElseIf pnode.GetType.ToString = tv.GetType.ToString() Then 'On a à faire à un treeview For Each node In CType(pnode, TreeView).Nodes If node.Value = pId Then node.Select() Else If RechercherNode(node, pId) = True Then node.Expand() Return True End If End If Next Else 'type incorrect Return False End If End Function