2013-04-18 8 views
6

Jak zrobić, aby moja aplikacja zapisała ostatnią ścieżkę otwartą w numerze openFileDialog i po otwarciu nowej wersji ją przywrócić?Jak zapisać ostatni folder w openFileDialog?

OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
if (openFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    acc_path = openFileDialog1.FileName; 
    Settings.Default.acc_path = acc_path; 

    foreach (string s in File.ReadAllLines(openFileDialog1.FileName)) 
    { 
     accs.Enqueue(s); 
    } 
    label2.Text = accs.Count.ToString(); 
} 

Odpowiedz

4

myślę, że to wystarczy, aby korzystać SetCurrentDirectory do STE bieżący katalog dla systemu operacyjnego. Tak więc przy kolejnym otwarciu okna dialogowego wybrana zostanie ta ścieżka.

Albo po prostu zapisz ścieżkę do pewnej zmiennej swojej aplikacji i użyj właściwości
.

1

Można użyć właściwości InitialDirectory: http://msdn.microsoft.com/fr-fr/library/system.windows.forms.filedialog.initialdirectory.aspx

OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
openFileDialog1.InitialDirectory = previousPath; 
if (openFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    previousPath = Path.GetDirectoryName(openFileDialog1.FileName); 
    acc_path = openFileDialog1.FileName; 
    Settings.Default.acc_path = acc_path; 

    foreach (string s in File.ReadAllLines(openFileDialog1.FileName)) 
    { 
     accs.Enqueue(s); 
    } 
    label2.Text = accs.Count.ToString(); 
} 
7

Po zmianie ustawień trzeba zadzwonić

Settings.Default.Save(); 

i przed otwarciem OpenFileDialog ustawić

openFileDialog1.InitialDirectory = Settings.Default.acc_path; 
+1

Osobiście podoba mi się to podejście, ponieważ nie używam tego samego wystąpienia selektora plików w wielu formularzach. – Joel

1

Poniżej znajduje się wszystko, czego potrzebujesz, aby otworzyć OpenFileDialog w katalogu ostatnio wybranego użytkownika, podczas całego życia poza aplikacją.

OpenFileDialog OpenFile = new OpenFileDialog(); 
OpenFile.RestoreDirectory = false; 
+1

, a także nie ustawiaj właściwości InitialDirectory. –

+0

... ale myślę, że masz na myśli: OpenFile.RestoreDirectory = true; – Viking

0

Uważam, że wszystko, co musisz zrobić, to NIE ustawić początkowego katalogu, a okno dialogowe zapamiętuje twoją ostatnią lokalizację zapisu/otwarcia. Zapamiętuje to nawet po zamknięciu i ponownym otwarciu aplikacji. Wypróbuj ten kod, skreślając początkowy katalog. Wiele z powyższych sugestii również zadziała, ale jeśli nie szukasz dodatkowej funkcjonalności, to wszystko, co musisz zrobić.

private void button1_Click(object sender, EventArgs e) 
    { 
     Stream myStream = null; 
     OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

     //openFileDialog1.InitialDirectory = "c:\\"; 
     openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
     openFileDialog1.FilterIndex = 2; 

     if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      try 
      { 
       if ((myStream = openFileDialog1.OpenFile()) != null) 
       { 
        using (myStream) 
        { 
         // Insert code to read the stream here. 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); 
      } 
     } 
    } 
0

jeśli używasz

Dim myFileDlog As New OpenFileDialog() 

następnie można wykorzystać do przywrócenia ostatniego katalogu

myFileDlog.RestoreDirectory = True 

i to nie

myFileDlog.RestoreDirectory = False 
0

wiem, że jest to trochę starego wątku, ale nie mogłem go znaleźć olution Lubiłem to samo pytanie, więc opracowałem własne. Zrobiłem to w WPF, ale powinien działać prawie tak samo w WinForm.

Zasadniczo używam pliku app.config do przechowywania ostatnich ścieżek moich programów.

Po uruchomieniu programu odczytuję plik konfiguracyjny i zapisuję zmienną globalną. Poniżej znajduje się klasa i funkcja, którą wywołuję, gdy mój program się uruchamia.

public static class Statics 
{ 
    public static string CurrentBrowsePath { get; set; } 

    public static void initialization() 
    { 
     ConfigurationManager.RefreshSection("appSettings"); 
     Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

     CurrentBrowsePath = ConfigurationManager.AppSettings["lastfolder"]; 
    } 
} 

Następny Mam przycisk, który otwiera okno przeglądania plików i ustawia właściwość do tego, co zostało zapisane w pliku konfiguracyjnym InitialDirectory. Mam nadzieję, że to pomoże każdemu googlować.

private void browse_Click(object sender, RoutedEventArgs e) 
    { 
     OpenFileDialog open_files_dialog = new OpenFileDialog(); 
     open_files_dialog.Multiselect = true; 
     open_files_dialog.Filter = "Image files|*.jpg;*.jpeg;*.png"; 
     open_files_dialog.InitialDirectory = Statics.CurrentBrowsePath; 

     try 
     { 
      bool? dialog_result = open_files_dialog.ShowDialog(); 

      if (dialog_result.HasValue && dialog_result.Value) 
      { 
       string[] Selected_Files = open_files_dialog.FileNames; 

       if (Selected_Files.Length > 0) 
       { 
        ConfigWriter.Update("lastfolder", System.IO.Path.GetDirectoryName(Selected_Files[0])); 
       } 

       // Place code here to do what you want to do with the selected files. 
      } 
     } 
     catch (Exception Ex) 
     { 
      MessageBox.Show("File Browse Error: " + Environment.NewLine + Convert.ToString(Ex)); 
     } 
    }