2013-03-07 12 views
13

Attualmente devo codificare per permettermi di leggere tutti i file di una cartella e scriverli sulla console. Di seguito, ho anche ottenuto il codice per selezionare singoli file da una directory utilizzando un browser. Mi piacerebbe sapere come sarei in grado di selezionare una cartella utilizzando un pulsante Sfoglia.cerca cartella in Applicazione console

codice per controllare tutti i file

foreach(var path in Directory.GetFiles(@"C:\Name\Folder\")) 
    { 
     Console.WriteLine(path); // full path 
     Console.WriteLine(System.IO.Path.GetFileName(path)); // file name 
    } 

codice per aprire la finestra di dialogo

OpenFileDialog fileSelectPopUp = new OpenFileDialog(); 
      fileSelectPopUp.Title = ""; 
      fileSelectPopUp.InitialDirectory = @"c:\"; 
      fileSelectPopUp.Filter = "All EXCEL FILES (*.xlsx*)|*.xlsx*|All files (*.*)|*.*"; 
      fileSelectPopUp.FilterIndex = 2; 
      fileSelectPopUp.RestoreDirectory = true; 
      if (fileSelectPopUp.ShowDialog() == DialogResult.OK) 
      { 
       textBox1.Text = fileSelectPopUp.FileName; 
      } 
+0

Non so se questo aiuterà, ma puoi provare http://stackoverflow.com/questions/31059/how-do-you-configure-an-openfiledialog-to-select-folders –

+0

Questo aveva già una risposta http://stackoverflow.com/questions/11767/ browse-for-a-directory-in-c-sharp ... Utilizzare un [FolderBrowserDialog ] (http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.aspx) – clemchen

risposta

26

In primo luogo è necessario aggiungere riferimento a System.Windows.Forms

Quindi, aggiungere STAThread Attributo al metodo principale. Ciò indica che il programma è a thread singolo e abilitato per funzionare con i componenti COM (utilizzati dalle finestre di dialogo del sistema).

Dopo che solo tu puoi utilizzare il FolderBrowserDialog con la console di

static class Program 
{ 
    [STAThread] 
    static void Main(string[] args) 
    { 
     FolderBrowserDialog fbd = new FolderBrowserDialog(); 
     if (fbd.ShowDialog() == DialogResult.OK) 
     { 
      foreach (var path in Directory.GetFiles(fbd.SelectedPath)) 
      { 
       Console.WriteLine(path); // full path 
       Console.WriteLine(System.IO.Path.GetFileName(path)); // file name 
      } 
     } 


    } 
} 
2

utente del FolderBrowserDialog

FolderBrowserDialog b = new FolderBrowserDialog(); 

if(b.ShowDialog() == DialogResult.OK) 
{ 
    var folderName = b.SelectedPath; 
} 
1

Alhough, fatto per le operazioni di immagine dell'interfaccia utente è possibile utilizzare DotImaging.UI:

string fileName = UI.OpenFile(); //open-file dialog 
+0

Perché funzioni, è necessario contrassegnare la funzione principale (o forse la funzione di chiamata) come [ STAThreadAttribute] – Techrocket9

Problemi correlati