Problème récursivité - treeview

Résolu
georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 avril 2007 - 5 août 2005 à 16:52
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 6 août 2005 à 17:57
J'ai effectivement du mal à utiliser la récursivité avec un treeview et
les sources que j'ai pu trouver jusqu'ici utilise souvent l'expand()
pour contourner le probleme...mais pour mon appli je ne peux pas me le
permettre.



Actuellement le code ci-dessous, rempli le Treeview tv_repertoires comme ça :



+ C:\hippocra\recup ----->Voilà le problème il y a deux nodes "C:\hippocra\recup" :-(

+ C:\hippocra\recup

+rep1

+rep2

+rep3

.....


Le code :



void B_AfficherRepClick(object sender, System.EventArgs e)

{

this.tv_repertoires.Nodes.Clear();

TreeNode root = new TreeNode("C:\\hippocra\\recup");

this.AddFolders(root, "C:\\hippocra\\recup");

this.tv_repertoires.Nodes.Add(root);

}



void AddFolders(TreeNode parent, String directory)

{

TreeNode enfant = new TreeNode(directory);

parent.Nodes.Add(enfant);

foreach (string files in Directory.GetFiles(directory))

enfant.Nodes.Add(files);

try

{


foreach (string subfolder in
Directory.GetDirectories(directory))

{

AddFolders(enfant,subfolder);

}



}catch{}

}

3 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
5 août 2005 à 19:16
Salut,

Tu peux rajouter un paramètre pour spécifier à ta méthode qu'il s'agit d'un noeud racine par exemple.

void B_AfficherRepClick(object sender, System.EventArgs e)
{
this.tv_repertoires.Nodes.Clear();
TreeNode root = new TreeNode("C:\\hippocra\\recup");
this.AddFolders(root, "C:\\hippocra\\recup", true);
this.tv_repertoires.Nodes.Add(root);
}


void AddFolders(TreeNode parent, String directory, bool isRootNode)
{
TreeNode enfant = new TreeNode(directory);


if ( !isRootNode )
{
parent.Nodes.Add(enfant);
}
else
{
enfant = parent;
}

foreach (string files in Directory.GetFiles(directory))
enfant.Nodes.Add(files);
try
{
foreach (string subfolder in Directory.GetDirectories(directory))
{
AddFolders(enfant,subfolder, false);
}

}
catch{}
}

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 avril 2007
6 août 2005 à 10:15
Merci, le coq ! (j'y avais même pô pensé)
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
6 août 2005 à 17:57
De rien :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous