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# remplir TreevIew


Sujet :

Windows Forms

  1. #1
    jpo
    jpo est déconnecté
    Membre régulier
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 118
    Points
    118
    Par défaut C# remplir TreevIew
    salut
    je souhaite remplir mon treeview sur mon winform avec l'arborescence d'un répertoire donnée (sous dossier + fichier)

    le problèm est que je m'arrete au 1° niveau
    je ne voi spas comment parcourir TOUS les dossiers et fichiers pour les inscrire dan smon treeview.

    mon code
    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
    string chemin = @"C:\Fichiers Excel";
    private void Form1_Load(object sender, EventArgs e)
    {
        rep(chemin);
    }
     
    private void rep(string dossier)
    {
    TreeNode n;
          DirectoryInfo DI = new DirectoryInfo(chemin);
          foreach (DirectoryInfo di in DI.GetDirectories())
          {
    //fichiers
         DirectoryInfo DI2 = new DirectoryInfo(@"C:\Fichiers Excel\" + di.Name);
                foreach (FileInfo fi in DI2.GetFiles())
                    {
                        n.Nodes.Add(fi.Name);
                    }
    //pour les sous dossiers
                 foreach (DirectoryInfo d2 in DI2.GetDirectories())
                    {
                        n.Nodes.Add(d2.Name);
                    }
            }
    si vous des idées .. une bonne adresse...

    merci

    jp

  2. #2
    Membre confirmé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Points : 610
    Points
    610
    Par défaut
    il te faudrait créer une fonction de récursivité afin de parcourir en profondeurs ton treeview


    voici une vieille fonction que j'avais utilisé...
    elle est modifiable et améliorable surtout....
    j'avais une table avec l'arborescence des employés

    je passe en paramètre un fils de la racine

    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
    protected void recursivité(TreeNode tn)
            {
                DataSet mon_ds = new DataSet();
     
                String son_nom;
                String son_idgwise;
                son_nom = tn.Text;//nom du père
     
    //on récupére sur le serveur la liste de ses fils
                mon_ds = isagramme.ListeFils(son_nom);
                if (mon_ds.Tables[0].Rows.Count != 0)//si a des fils
                {
                    foreach (DataRow row in mon_ds.Tables[0].Rows)//pour chaque fils
                    {
                        son_idgwise = row["ID"].ToString();
                        fils = new TreeNode(son_idgwise);
                        tn.Nodes.Add(fils);//on lui ajoute son fils
                        recursivité(fils); //et on recommence avec le fils en parent
     
                    }
                }
    en reprenant le principe tu devrais réussir à faire quelque chose
    bon courage .....

    ps : méfie toi pour remplir ton treeview, tu peux le faire de façon synchrone (tout d'un coup) qui est assez long ou bien en asynchrone (tu charges au fur et à mesure) qui est plus efficace....

  3. #3
    jpo
    jpo est déconnecté
    Membre régulier
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 118
    Points
    118
    Par défaut
    salut
    merci pour ta réponse

    en fait voilà comment j'ai fait
    c'est pas du grand art mais ca marche

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
           private void rep(DirectoryInfo chemin) 
            {
                TreeNode n;
                TreeNode n2;
                TreeNode n3;
                TreeNode n4;
                TreeNode n5;
                TreeNode n6;
                TreeNode n7;
     
                DirectoryInfo DI = chemin;
     
                foreach (DirectoryInfo di in DI.GetDirectories())
                {
                    n = TV.Nodes.Add(di.Name);
                    n.Tag = "dossier";
     
                    foreach (FileInfo fi20 in di.GetFiles())
                    { n.Nodes.Add(fi20.Name).Tag = "fichier"; }
     
                    foreach (DirectoryInfo d2 in di.GetDirectories())
                    {
                        n2 = n.Nodes.Add(d2.Name);
                        n2.Tag = "dossier";
     
                        foreach (FileInfo fi2 in d2.GetFiles())
                        { n2.Nodes.Add(fi2.Name).Tag = "fichier"; }
     
                        foreach (DirectoryInfo d3 in d2.GetDirectories())
                        {
                            n3 = n2.Nodes.Add(d3.Name);
                            n3.Tag = "dossier";
     
                            foreach (FileInfo fi3 in d3.GetFiles())
                            { n3.Nodes.Add(fi3.Name).Tag = "fichier"; }
     
                            foreach (DirectoryInfo d4 in d3.GetDirectories())
                            {
                                n4 = n3.Nodes.Add(d4.Name);
                                n4.Tag = "dossier";
     
                                foreach (FileInfo fi4 in d4.GetFiles())
                                { n4.Nodes.Add(fi4.Name).Tag = "fichier"; }
     
                                foreach (DirectoryInfo d5 in d4.GetDirectories())
                                {
                                    n5 = n4.Nodes.Add(d5.Name);
                                    n5.Tag = "dossier";
     
                                    foreach (FileInfo fi5 in d5.GetFiles())
                                    { n5.Nodes.Add(fi5.Name).Tag = "fichier"; }
     
                                    foreach (DirectoryInfo d6 in d5.GetDirectories())
                                    {
                                        n6 = n5.Nodes.Add(d6.Name);
                                        n6.Tag = "dossier";
     
                                        foreach (FileInfo fi6 in d6.GetFiles())
                                        { n6.Nodes.Add(fi6.Name).Tag = "fichier"; }
     
                                        foreach (DirectoryInfo d7 in d6.GetDirectories())
                                        {
                                            n7 = n6.Nodes.Add(d7.Name);
                                            n7.Tag = "dossier";
     
                                            foreach (FileInfo fi7 in d7.GetFiles())
                                            { n7.Nodes.Add(fi7.Name).Tag = "fichier"; }
     
                                        }
     
                                    }
     
                                }
     
                            }
     
                        }
     
                    }
     
                }
                foreach (FileInfo fi in DI.GetFiles())
                {
                    //n.Nodes.Add(fi.Name);
                    n = TV.Nodes.Add(fi.Name);
                    n.Tag = "fichier";
     
                }
     
            }
    si ca intéresse qq un ....

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 19
    Points
    19
    Par défaut C# remplir TreevIew
    Merci jpo. J'avais le même pb. c'est résolu après avoir vu ta réponse. Merci encore d'avoir posté la réponse.Tu aurais pu ne pas revenir, mais par ton bon sens du partage tu es revenu.

  5. #5
    jpo
    jpo est déconnecté
    Membre régulier
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 118
    Points
    118
    Par défaut
    avec plaisir ....

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

Discussions similaires

  1. remplir treeView Vb.net
    Par gentelmand dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/04/2009, 18h00
  2. remplir treeview a partir d'un datatable
    Par hachdotnet dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/03/2009, 12h13
  3. Remplir Treeview depuis DataTable
    Par Anaxagore dans le forum Windows Forms
    Réponses: 10
    Dernier message: 19/03/2009, 22h44
  4. Remplir treeview sur clique, et accès aux fichiers
    Par killysui dans le forum ASP.NET
    Réponses: 0
    Dernier message: 23/02/2009, 11h14
  5. [C#] Remplir treeview depuis string[] de paths
    Par joujoukinder dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/12/2006, 11h06

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