Что на самом деле делает свойство FileDialog.RestoreDirectory? - PullRequest
25 голосов
/ 04 декабря 2010

Я читал о свойстве в MSDN, но до сих пор не понимаю, что оно делает.

Получает или задает значение, указывающее, восстанавливает ли диалоговое окно текущий каталог перед закрытием.

Что именно это значит?Что на самом деле делает «восстановление» текущего каталога?Спасибо за помощь.

Ответы [ 5 ]

28 голосов
/ 04 декабря 2010

IIRC, в Windows XP при нажатии Save на SaveFileDialog (или Open на OpenFileDialog) каталог, в котором файл сохранен (или открыт), устанавливается как новый текущий рабочий каталог(один в Environment.CurrentDirectory).

При установке FileDialog.RestoreDirectory = true при закрытии FileDialog восстанавливается исходный рабочий каталог.

В Windows Vista / Seven поведение всегдакак FileDialog.RestoreDirectory = true (да, даже если вы установите его в false ...).

6 голосов
/ 04 декабря 2010

Раздражающая оригинальная реализация состояла в том, что после того, как вы сделали свой выбор , текущий каталог вашего приложения изменился на эту папку, что означает, что если вы ожидали, что операции с файлами будут относиться к папке вашего приложения, то сейчас не удалось.

Это означало, что обычной практикой было добавление кода для захвата текущей папки перед использованием его диалогового окна и последующее восстановление его.

Это было исправлено, поэтому он может сделать это за вас, но изменение поведения по умолчанию могло бы привести к поломке кода, основанного на причуде. Поэтому вам нужно включить его вручную через это свойство.

0 голосов
/ 13 сентября 2012

Здесь я говорю только о WinForms FileDialog, WPF FileDialog может иметь другое поведение.

Для Win XP текущий каталог изменяется во время использования диалога.

Для многопоточных приложений, это должно быть известно. Это легко проверить, запустив цикл в новом потоке, чтобы проверить, изменяется ли текущий каталог во время использования диалогового окна при переключении на другую папку.

Для Win 7 / mono текущий каталог не изменяется ни во время, ни после использования диалогового окна.

Поэтому Win 7 / mono: свойство RestoreDirectory не требуется.

0 голосов
/ 04 декабря 2010

Если установлено значение true, в диалоговом окне файла всегда будет открываться путь к файлу по умолчанию (свойство InitialDirectory).

0 голосов
/ 04 декабря 2010

Когда вы можете выбрать каталог при использовании диалогового окна, следующее использование диалогового окна откроется в последнем использованном каталоге.Использование этой опции восстановит исходный каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...