2009-09-16 5 views
0

Я не уверен, были ли эти темы обсуждены до или без, но я не уверен, что точное слово для его поиска. Какой метод/класс следует использовать?C#: как проверить и отобразить содержимое папки?

Программа имеет 3 кнопки: 1) для просмотра папок, 2) поиск содержимого выбранной папки и 3) открытие файла. Когда пользователь просматривает выбранную папку ** (1) , нажмите кнопку сканирования для сканирования из первого файла до последних доступных файлов и перечислите его в текстовое поле (2) **, и от этого пользователя можно решить, следует ли открывать файлов или нет ** (3) **.

Вот то, что не я сделал до сих пор (не 1 и 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

Звучит как домашнее задание te me. – Natrium

+1

Вы пытаетесь воспроизвести функциональность OpenFileDialog? http://msdn.microsoft.com/en-us/library/aa287592(VS.71).aspx –

+0

Почему вы не используете FolderBrowser .NET для просмотра папок te? – Natrium

ответ

0

Если вы пытаетесь просто открыть файл, вы можете использовать Open File Dialog.

Если вам нужно показать содержимое справочника, вы можете использовать Directory Info Class.

+0

Спасибо, он решил! – user147685

0

Ну мой пример приложение WPF, который добавляет файлы/папки в директории в TreeView, но вы должны получить Основная идея:

Примечание: код был написан для учений, и, следовательно, только идет 3 уровня глубины, как доказательство концепции рода вещи


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

Будьте уверены, что решение, которое вызывает себя, будет работать, но если вы проверите достаточно папок, вы получите stackoverflow (каламбур не предназначен). – EKS

+0

Yup, на самом деле я думаю, что это было то, что я пробовал первым! А хорошо ... –

Смежные вопросы