Как я могу сохранить и загрузить последнюю выбранную пользователем папку с помощью FolderBrowserDialog?

private void btnStart_Click(object sender, EventArgs e)
{
    System.Windows.Forms.FolderBrowserDialog openFolderDialog = new System.Windows.Forms.FolderBrowserDialog();

    if (openFolderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        Properties.Settings.Default.LastSelectedFolder = openFolderDialog.SelectedPath.ToString();
        Properties.Settings.Default.Save();
}

LastSelectedFolder не существует. Я попытался перейти к свойствам проекта на вкладку «Настройки» и там добавил к значению LastSelectedFolder.

Итак, теперь у меня есть: Имя Параметр Тип string Область действия пользователя Значение LastSelectedFolder

Но он не работает, все еще получая ошибку, а также после сохранения, где и как мне загрузить его обратно при нажатии кнопки btnStart?

LastSelectedFolder не существует после значения по умолчанию даже после его добавления в настройки:

Настройки


person moshe ralf    schedule 09.02.2017    source источник
comment
Вы сохранили последнюю выбранную папку, но в следующий раз, когда вы показываете FolderBrowserDialog, вы ее не использовали.   -  person Reza Aghaei    schedule 09.02.2017
comment
1) В вашей новой редакции вопроса, как мы видим на снимке экрана, свойство называется Setting и содержит значение LastSelectedFolder. Таким образом, ваш код в настоящее время должен иметь ошибку сборки, потому что вы используете Properties.Settings.Default.LastSelectedFolder. 2) Также вам не нужно вручную назначать параметр свойству браузера папок, используйте привязку свойства к настройкам приложения, например: Сохранить настройки в VB.Net или C#   -  person Reza Aghaei    schedule 09.02.2017


Ответы (2)


Вы должны установить последний путь по умолчанию, если вы создаете новый диалог. Поэтому вы также можете использовать свойство FolderBrowserDialog.SelectedPath. Вот ваш код с дополнительной строкой:

private void btnStart_Click(object sender, EventArgs e)
{
    System.Windows.Forms.FolderBrowserDialog openFolderDialog = new System.Windows.Forms.FolderBrowserDialog();
    openFolderDialog.SelectedPath = Properties.Settings.Default.LastSelectedFolder;

    if (openFolderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
            Properties.Settings.Default.LastSelectedFolder = openFolderDialog.SelectedPath.ToString();
            Properties.Settings.Default.Save();
    }
}

На скриншоте вы назвали свой параметр Setting. Измените его на LastSelectedFolder и очистите значение по умолчанию (последний столбец).

После этого вы можете скомпилировать и запустить!

person Fruchtzwerg    schedule 09.02.2017
comment
Но LastSelectedFolder не существует после Default: Properties.Settings.Default.LastSelectedFolder даже после добавления LastSelectedFolder в настройки в свойствах проекта. - person moshe ralf; 09.02.2017
comment
Похоже проблема в настройках. Можете показать настройки? - person Fruchtzwerg; 09.02.2017
comment
Я добавил решение в свой ответ. - person Fruchtzwerg; 09.02.2017

Попробуй это:

private void btnStart_Click(object sender, EventArgs e)
    {
        System.Windows.Forms.FolderBrowserDialog openFolderDialog = new System.Windows.Forms.FolderBrowserDialog();
        openFolderDialog.SelectedPath = Properties.Settings.Default.LastSelectedFolder;

        if (openFolderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            Properties.Settings.Default.LastSelectedFolder = openFolderDialog.SelectedPath.ToString();
            Properties.Settings.Default.Save();
    }
person David    schedule 09.02.2017