OpenFileDialog и Environment.CurrentDirectory
После использования OpenFileDialog
для выбора файла Environment.CurrentDirectory
изменения в папке файла. Это нормально?
Из моего понимания Environment.CurrentDirectory всегда должен быть папкой приложения.
3 ответа
Потому что диалоговое окно изменяет Environment.CurrentDirectory при поиске файлов или папок... или выборе их для загрузки... и т. Д.
Примечание: как указано в комментарии к вашему вопросу, перейдите по ссылке на повторяющийся вопрос.
FileDialog.RestoreDirectory property.
Посмотри на
Различие AppDomain.CurrentDomain.BaseDirectory и Environment.CurrentDirectory
Какая разница в следующем?
- AppDomain.CurrentDomain.BaseDirectory
- Environment.CurrentDirectory
- AppDomainSetup.ApplicationBase
1 и 3 в основном одинаковы. Разница в том, что AppDomainSetup.ApplicationBase доступен для записи, но AppDomain.BaseDirectory доступен только для чтения, поскольку вы не можете изменить его после создания домена приложения.
2 это нечто совершенно другое. Он используется для разрешения относительных путей, между прочим. Вы можете изменить CurrentDirectory в любое время в своем коде, и это также может быть изменено такими вещами, как FileDialogs.
Да, это нормально, и нет, текущий каталог не всегда папка приложения. Запустите cmd и используйте команду cd, чтобы изменить каталог. Вы только что изменили то же значение, которое отображается в Environment.CurrentDirectory! Вы должны когда-либо использовать текущее значение каталога, только когда пользователь указывает имя файла через командную строку или аналогичный механизм. Если вы хотите папку приложения, используйте свойство Application.StartupPath.