Bon vendredi à tous!
J'ai cette sub récursive qui cherche tous les sous-dossiers à partir d'une racine passée en paramètre et affiche tous les sous-dossiers dans un TreeView:
À l'aide d'un bouton, je lances la routine comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Public Sub LoadSubTree(ByRef noeud As TreeNode, ByVal chemin As String) For Each dossier In Directory.GetDirectories(chemin) noeud.Nodes.Add(Replace(dossier, chemin & "\", "")) Next For Each tn As TreeNode In noeud.Nodes LoadSubTree(tn, tn.FullPath) Next End Sub
Le problème est qu'à la fin de l'exécution, mon TreeView contient 2 fois la même racine et tout ses sous-dossiers. J'ai beau faire du "step-by-step" mais je ne comprends pas comment il fait pour afficher une 2e fois la racine. De plus, à la fin de l'exécution, j'ai vérifié le TreeView.Nodes.Count et il est égal à 1. Donc le TreeView ne voit qu'un noeud, mais il y en a 2 d'afficher (voir load.jpg)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Public Sub LoadNewTree() Dim FolderBrowserDialog1 As New FolderBrowserDialog FolderBrowserDialog1.ShowNewFolderButton = False FolderBrowserDialog1.ShowDialog() If FolderBrowserDialog1.SelectedPath <> "" Then 'Clear ou Remove donne le même résultat 'Explo_win.TreeView.Nodes.Clear() Explo_win.TreeView.Nodes.RemoveAt(0) Explo_win.TreeView.Nodes.Add(FolderBrowserDialog1.SelectedPath) LoadSubTree(Explo_win.TreeView.Nodes(0), FolderBrowserDialog1.SelectedPath) Explo_win.TreeView.SelectedNode = Explo_win.TreeView.Nodes(0) End If Explo_win.TreeView.ExpandAll() End Sub
J'utilise la même fonction à l'ouverture pour ouvrir le dossier de base, sans problème.
(voir ouverture.jpg)
Partager