Réponse acceptée !
Salut,
Je n'ai pas trouvé de solution "simple".
Pour avoir tous les noeuds, il faut faire un traitement récursif, de façon à ramener pour chaque noeud, la totalité de ses noeuds fils
Ci dessous :
- une procédure permettant de ramener tous les noeuds fils d'un noeud,
- une fonction appelant la procédure précédente et renvoyant ainsi la totalité des noeuds passés en paramètre
- un exemple d'utilisation.
Private
Sub lsub_GetNodes(ByVal a_Node As TreeNode, ByVal a_Collection As Collection)
'Recherche les noeuds fils du noeud passé en paramètre et les ajoute à la collection a_Collection
Dim
l_Node As TreeNode
'Parcourt les noeuds fils
For
Each l_Node In a_Node.Nodes
'Ajoute le noeud à la collection
a_Collection.Add(l_Node)
'Recherche les noeuds inférieurs
lsub_GetNodes(l_Node, a_Collection)
Next
End
Sub
Private
Function lfct_GetTreeViewNodes(ByVal a_Treeview As TreeView) As Collection
'Renvoie, sous forme d'une collection, la liste des noeuds du treeview
Dim
l_Node As TreeNode
Dim
l_Coll AsNew Collection
'Parcourt les noeuds "Pères" du treeview
For
Each l_Node In a_Treeview.Nodes
'Ajoute ces noeuds à la collection
l_Coll.Add(l_Node)
'Recherche les noeuds fils de l_Node
lsub_GetNodes(l_Node, l_Coll)
Next
l_Node
'Renvoie la collection de noeuds
lfct_GetTreeViewNodes = l_Coll
End
Function
Utilisation :
Private
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim
l_Node As TreeNode
For
Each l_Node In lfct_GetTreeViewNodes(TreeView1)
ListBox1.Items.Add(l_Node.Text)
Next
End
Sub