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));
}
}
Osobiście podoba mi się to podejście, ponieważ nie używam tego samego wystąpienia selektora plików w wielu formularzach. – Joel