2009-09-16 8 views
0

Je ne suis pas sûr si ces sujets ont été discutés avant ou non, mais je ne suis pas sûr du mot exact pour le rechercher. Quelle méthode/classe dois-je utiliser?C#: comment vérifier et afficher le contenu d'un dossier?

Le programme possède 3 boutons: 1) pour la navigation dans les dossiers, 2) pour rechercher le contenu du dossier sélectionné, et 3) ouvrir le fichier. Lorsque l'utilisateur parcourt le dossier sélectionné ** (1) , l'utilisateur clique sur le bouton de numérisation pour numériser du premier fichier jusqu'aux derniers fichiers disponibles et l'inscrit dans la zone de texte (2) ** et peut décider d'ouvrir le fichiers ou non ** (3) **.

Voici ce que j'ai fait jusqu'à présent (n ° 1 et 3):

//For browse. 
private void browse2() 
{ 
    if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) 
    { 
     this.txtDest.Text = folderBrowserDialog1.SelectedPath; 
    } 
} 

//For opening folder. 
private void btnOpen_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     Process.Start(txtDest.Text); 
    } 
    catch 
    { 
     MessageBox.Show("Please select one file/folder"); 
    } 
} 
+0

Cela ressemble à des devoirs pour moi. – Natrium

+1

Essayez-vous de répliquer la fonctionnalité de OpenFileDialog? http://msdn.microsoft.com/en-us/library/aa287592(VS.71).aspx –

+0

Pourquoi n'utilisez-vous pas le FolderBrowser de .NET pour parcourir les dossiers? – Natrium

Répondre

0

Si vous essayez simplement ouvrir un fichier vous pouvez directement utiliser un Open File Dialog. Si vous devez afficher le contenu d'un répertoire, vous pouvez utiliser le Directory Info Class.

+0

Merci beaucoup, ça a résolu !! – user147685

0

Eh bien mon exemple est une application WPF qui ajoute des fichiers/dossiers dans un répertoire à un TreeView, mais vous devriez obtenir le idée générale:

note: code a été écrit pour un exercice de formation, et par conséquent ne va 3 niveaux de profondeur, comme preuve du concept genre de chose


private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      foreach (DriveInfo di in DriveInfo.GetDrives()) 
      { 
       TreeViewItem drive = new TreeViewItem(); 
       drive.Header = di.Name; 
       treeView1.Items.Add(drive); 

       DirectoryInfo folders = new DirectoryInfo(di.Name); 

       // The depth count means that it only goes 3 levels deep, to make it quick to load 
       GetFoldersAndFiles(drive, folders, 3); 
      } 
     } 

     private static void GetFoldersAndFiles(TreeViewItem parent, DirectoryInfo folders, int depth) 
     {   
      if ((depth > 0) 
      { 
       foreach (DirectoryInfo dirI in folders.GetDirectories()) 
       { 
        TreeViewItem dir = new TreeViewItem(); 
        dir.Header = dirI.Name; 
        parent.Items.Add(dir); 

        GetFoldersAndFiles(dir, dirI, depth - 1); 
       } 

       foreach (FileInfo fileI in folders.GetFiles()) 
       { 
        TreeViewItem file = new TreeViewItem(); 
        file.Header = fileI.Name; 
        parent.Items.Add(file); 
       } 
      } 
     } 
+0

Soyez avisé qu'une solution qui s'appelle elle-même fonctionne, mais si vous vérifiez suffisamment de dossiers, vous obtiendrez un stackoverflow (sans jeu de mots). – EKS

+0

Ouais, en fait je pense que c'est ce que j'ai essayé en premier! Eh bien ... –

Questions connexes