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

C# Discussion :

Parcourir et sélectionner des fichiers et dossiers


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Par défaut Parcourir et sélectionner des fichiers et dossiers
    Bonjour ou plutôt bonsoir,

    Dans l'application que je développe, j'utilise un bouton qui me sert à parcourir des fichiers grâce au composant "openFileDialog".
    Le problème c'est qu'il ne gère que les fichiers et pas les dossiers.
    Et inversement pour le composant "folderBrowserDialog".

    Auriez-vous une idée pour contourner cela ?

    J'ai vu des choses "vite fait" sur Google, mais des étapes imcompréhensibles...

    Merci d'avance pour vos réponses.

    diabolokev

  2. #2
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonjour,

    Et non, il n'existe pas de composant pour sélectionner indifféremment un dossier ou un fichier, mais j'ai été confronté au même soucis quelques années auparavant, et tu dois développer ton composant toi même...

    Je n'ai plus du tout les sources, mais c'est pas sorcier.Si tu as besoin d'aide n'hésites pas.

    Bon dév.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Par défaut
    Peux-tu me guider car je ne sais pas par où commencer ?

    Je n'ai jamais créé de composant en C#...

    EDIT1 :

    J'ai trouvé ça : http://www.codeproject.com/Articles/...-IShellBrowser

    Par contre faut que je sache l'intégrer à Visual Studio... Ca c'est encore autre chose

    EDIT2 :

    Bon... Le composant n'était pas celui recherché...

  4. #4
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonjour,

    Commence déjà par récupérer les fichiers et dossiers de manière récursive (attention aux perfs, il vaut mieux récupérer les sous dossiers au moment où l'utilisateur en a besoin, ça prend moins de temps que tout charger dès le début en mémoire) et tu les affiches dans un composant du style treeview.

    Commence à coder et si tu as des problèmes, n'hésites pas...

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Par défaut
    J'ai réussi à afficher dans 3 ListBox :
    - Lecteurs
    - Dossiers
    - Fichiers

    Le problème : Là où il y a des dossiers, il n 'y pas les fichiers et inversement pour l'autre. Je ne peux pas faire de sélections multiples.

    Comment puis-je faire avec un TreeView ?

    Voici mon code actuel :

    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
    private void Form2_Load(object sender, EventArgs e)
            {
                foreach (DriveInfo di in DriveInfo.GetDrives())
                {
                    driveList.Items.Add(di);
                }
            }
     
            private void driveList_SelectedIndexChanged(object sender, EventArgs e)
            {
                foldersList.Items.Clear();
                try
                {
                    DriveInfo drive = (DriveInfo)driveList.SelectedItem;
                    foreach (DirectoryInfo dirInfo in drive.RootDirectory.GetDirectories())
                    {
                        foldersList.Items.Add(dirInfo);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
     
            private void foldersList_SelectedIndexChanged(object sender, EventArgs e)
            {
                filesList.Items.Clear();
                filesList2.Items.Clear();
                DirectoryInfo dir = (DirectoryInfo)foldersList.SelectedItem;
                foreach (FileInfo fi in dir.GetFiles())
                {
                    filesList.Items.Add(fi);
                    filesList2.Items.Add(fi.Name);
                }
            }

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Par défaut
    J'ai réussi à charger mes lecteurs et mes dossiers, mais c'est super long car il charge tout d'un coup...

    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
    private void Form1_Load(object sender, EventArgs e)
            {
                try
                {
                    //On efface le contenu du TreeView
                    tvExp.Nodes.Clear();
                    string[] drives = Environment.GetLogicalDrives();
                    //Pour chaque lecteur...
                    foreach (string drv in drives)
                    {
                        TreeNode node = new TreeNode();
                        node.Text = drv;
                        tvExp.Nodes.Add(node);
                        FillDirectory(drv, node, 0);
                    }
                }
                catch (Exception ex)
                {
                    ex.ToString();
                }
            }
     
    private void FillDirectory(string drv, TreeNode parent, int level)
            {
                try
                {
                    level++;
                    if (level > 4)
                        return;
                    DirectoryInfo dir = new DirectoryInfo(drv);
                    if (!dir.Exists)
                        throw new DirectoryNotFoundException
                            ("Le répertoire n'existe pas :" + drv);
     
                    foreach (DirectoryInfo di in dir.GetDirectories())
                    {
                        TreeNode child = new TreeNode();
                        child.Text = di.Name;
                        parent.Nodes.Add(child);
     
                        FillDirectory(child.FullPath, child, level);
                    }
                }
                catch (Exception ex)
                {
                    ex.ToString();
                }
     
            }
    Il faudrait que je charge les répertoires et fichiers en cliquant sur le lecteur que je veux. Et ainsi de suite avec les sous-répertoires...

    Quelqu'un aurait une idée s'il vous plait ?

    EDIT :
    PS : J'ai récupéré un peu de code sur un site

Discussions similaires

  1. sélectionner des fichiers et des dossiers
    Par bog333 dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 23/12/2008, 16h31
  2. gestion des fichiers et dossiers avec FTP
    Par ahmeds dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 12/10/2006, 13h09
  3. [VBA-E] Bouton parcourir pour sélectionner un fichier
    Par $p00ky dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/05/2006, 10h14
  4. Réponses: 4
    Dernier message: 25/11/2005, 11h25
  5. [Delphi 2005] Comment parcourir la liste des fichiers ?
    Par babyface dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2005, 11h01

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