Rechercher : dans
Par :

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

Dernière réponse le 18 aoû 2009 à 16:38:21 greg, le 18 aoû 2009 à 15:32:45 
 Signaler ce message aux modérateurs

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.
Configuration: Windows XP
Firefox 3.5.2

Meilleures réponses pour « [C#] Parcours de dossier + Treeview récursif » dans :
Tri à bulles -récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri à bulles : Procedure Tri_bulles (var t : TAB; n : integer); Var i, aux : integer; Function Trier (t : TAB; n : integer) : Boolean; ...
Vider le dossier prefetch pour accélérer Windows VoirMythe Il est utile de purger régulièrement le dossier prefetch: Cela accélère Windows. Réalité FAUX. Explications Il faut bien comprendre à quoi sert le dossier prefetch (C:\WINDOWS\Prefetch): Lorsque vous lancez un programme, il fait:...

1

 greg, le 18 aoû 2009 à 16:38:21
  • +1

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....

Répondre à greg
Collection CommentÇaMarche.net