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