IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#]Peupler dynamiquement un treeview [FAQ]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 141
    Par défaut [C#]Peupler dynamiquement un treeview
    Bonjour à tous !

    je suis debutant C# .Dans le cadre de mon projet je dois mettre en place un client FTP et hierarchiser tous mes repertoires dans un treeview.
    j'y arrive mais le pb c'est au niveau des "enfants". comment creer dynamiquement des noeuds avec des "enfants" qui representent les fichires contenus dans mon repertoire ?

    En d'autres termes comment faire dynamiquement (par programme) mon treeview de sorte que les sous -repertoires contenant des fichiers soient des noeuds "parents" avec comme "enfants" les fichiers qu'ils contiennent ?
    Merci de m'aider !

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Par défaut
    Salut,

    tu peux essayer une méthode récursive:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    private void AddDirectoryAndNode(TreeNode ParentNode,string DirectoryPath)
    {
    	string[] directories = Directory.GetDirectories(DirectoryPath);
    	foreach (string childDirectoryPath in directories)
    	{
    		TreeNode childNode = new TreeNode(childDirectoryPath);
    		ParentNode.Nodes.Add(childNode);
    		AddDirectoryAndNode(childNode, childDirectoryPath);
    	}
    }
     
    private void button1_Click(object sender, EventArgs e)
    {
    	TreeNode initialNode;
    	string initialDirectory = @"C:\Documents and Settings\All Users\Documents";
     
    	initialNode = new TreeNode(initialDirectory);
    	treeView1.Nodes.Add(initialNode);
     
                AddDirectoryAndNode(initialNode,initialDirectory);
    }

    Dans mon example lorsqu'on clique sur le bouton on crée un dossier initial avec un chemin initial. ensuite on lance la méthode récursive AddDirectoryAndNode.
    Dans cette methode chaque dossier trouvé dans le dossier "parent" provoquera un nouvel appel de AddDirectoryAndNode

    J'espère que cela te seras utile

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 141
    Par défaut
    Merci beaucoup !
    ça marche parfaitement comme je veux lorsque les sous-repertoires de mon repertoire initial contiennent à leur tour des sous repertoires. Mais comme ils ne contiennent que des fichiers j'ai dü adapter en creant une autre methode que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void AddFilesToNode(TreeNode ParentNode, string FilePath)
            {
                string[] files = Directory.GetFiles(FilePath);
                foreach (string childfile in files)
                {
                    TreeNode childNode = new TreeNode(childfile);
                    ParentNode.Nodes.Add(childNode);
     
                }
            }
    Finalement j'appelle ma methode comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    private void AddDirectoryAndNode(TreeNode ParentNode, string DirectoryPath)
     {
         string[] directories = Directory.GetDirectories(DirectoryPath);
         foreach (string childDirectoryPath in directories)
         {
             TreeNode childNode = new TreeNode(childDirectoryPath);
             ParentNode.Nodes.Add(childNode);
             AddFilesToNode(childNode, childDirectoryPath);
         }
     }
            private void AddFilesToNode(TreeNode ParentNode, string FilePath)
            {
                string[] files = Directory.GetFiles(FilePath);
                foreach (string childfile in files)
                {
                    TreeNode childNode = new TreeNode(childfile);
                    ParentNode.Nodes.Add(childNode);
                   
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                TreeNode initialNode;
                string initialDirectory = @"D:\RepertoireScan";
    
                initialNode = new TreeNode(initialDirectory);
                treeView1.Nodes.Add(initialNode);
    
                AddDirectoryAndNode(initialNode, initialDirectory);
            }
    Merci encore

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Voila qui serait utile dans la FAQ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment alimenter dynamiquement mon TreeView
    Par walid kh dans le forum VB.NET
    Réponses: 4
    Dernier message: 20/04/2010, 14h52
  2. Tableau dynamique et treeview
    Par fifisoft57 dans le forum Débuter
    Réponses: 1
    Dernier message: 01/10/2009, 10h07
  3. Remplir dynamiquement un TreeView
    Par damene dans le forum Débuter
    Réponses: 2
    Dernier message: 05/02/2009, 09h19
  4. Ajout dynamique de treeviews/eventHandler
    Par lantier dans le forum ASP.NET
    Réponses: 19
    Dernier message: 21/06/2007, 21h39
  5. [VB.NET] Construire dynamiquement des TreeView
    Par apoingsfermes dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/06/2006, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo