[C#] Parcours de dossier + Treeview récursif

Résolu/Fermé
greg - 18 août 2009 à 15:32
 djoufack beatrice - 13 juil. 2012 à 21:44
Bonjour,

Je cherche actuellement à faire un Treeview m'affichant récursivement les dossiers et sous dossiers contenus dans un dossier racine.
Le parcours des dossiers s'effectuent normalement, tous les dossiers sont bien parcourus mais c'est le Treeview qui coince, en effet, mon noeud racine marche correctement mais tous les autres dossiers s'affichent sur le même nœud.

Cela donne un truc du genre:

---racine
-----parent1
-----enfant1
-----enfant2
-----enfant[n]
-----parent2
-----enfant1
-----enfant2
-----enfant[n]
etc...

Et moi, je voudrais dans le genre:
---racine
-----parent1
--------enfant1
--------enfant2
--------enfant[n]
-----parent2
--------enfant1
--------enfant2
--------enfant[n]

En sachant que chaque enfant peut lui même encore avoir des enfants.


La fonction récursive:
private void Browse (DirectoryInfo dir, TreeNode current) {
			  FileSystemInfo[] f = dir.GetFileSystemInfos() ;
			foreach ( FileSystemInfo i in f ){
				if (i.GetType().ToString()== "System.IO.DirectoryInfo") {
					current.Nodes.Add(i.Name);
					DirectoryInfo di = new DirectoryInfo(i.FullName);
					Browse(di,current);
				}
			}
		}


L'événement chargement du form:
private void Form1_Load(object sender, System.EventArgs e) {
			string path = @"C:\TEST_ROOT\TEST_FILES\TEST";
			DirectoryInfo dir = new DirectoryInfo(path);
			TreeNode root = TV.Nodes.Add(dir.Name);
			Browse(dir,root);
		}


Si quelqu'un à ne serait-ce qu'une seule idée je suis preneur parce que la je patauge et tourne en rond.
Je vous remercie d'avance pour vos réponses,
Cordialement.
A voir également:

5 réponses

djoufack beatrice
13 juil. 2012 à 21:44
djoufack beatrice
27
A force de recherche j'ai fini par trouver ma solution.

la fonction récursive:
private void Browse(string _path, TreeNode _node){
			DirectoryInfo dirRoot = new DirectoryInfo(_path); 

			foreach(DirectoryInfo nextFolder in dirRoot.GetDirectories())
			{
				TreeNode dirNode = _node.Nodes.Add (nextFolder.Name);

				Browser (nextFolder.FullName, dirNode); 
			} 
		}


L'événement:
private void Form1_Load(object sender, System.EventArgs e) {
			string path = @"C:\TEST_DIR\TEST_FILES\TEST";
			TreeNode root = TV.Nodes.Add("TEST");
			Browser(path,root);
		}


Si ça peu être utile à quelqu'un.
Comme quoi fallait pas chercher à faire compliquer....
22
superbe
2
Skeletyon Messages postés 1552 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 30 décembre 2013 156
18 avril 2012 à 12:01
Magnifique.

Reste plus qu'à afficher les fichiers avec les dossiers et c'est parfait.
1

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

Posez votre question
Effectivement il reste plus qu'à afficher les fichiers avec les dossiers et c'est parfait.
1