Я знаю, что это бит старого потока, но я не смог найти его как Мне понравился этот же вопрос, поэтому я разработал свой собственный. Я сделал это в WPF, но он должен работать почти так же в Winforms.
По сути, я использую файл для хранения моих последних программ.
Когда моя программа запускается, я читаю конфигурационный файл и сохраняю его в глобальной переменной. Ниже приведен класс и функция, которые я вызываю, когда запускается моя программа.
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"];
}
}
Далее у меня есть кнопка, которая открывает диалоговое окно просмотра файлов и устанавливает InitialDirectory
свойство к тому, что было сохранено в файле конфигурации. Надеюсь, это поможет любому поисковому роботу.
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));
}
}
Мне лично нравится этот подход, так как я не использую один и тот же экземпляр выбора файла для нескольких форм. – Joel