#.net #winforms
#.net #winforms
Вопрос:
Это работает:
FolderBrowserDialog dlg = new FolderBrowserDialog();
dlg.RootFolder = Environment.SpecialFolder.MyComputer;
dlg.SelectedPath = "C:\Almo\";
dlg.ShowDialog();
Это не:
FolderBrowserDialog dlg = new FolderBrowserDialog();
dlg.RootFolder = Environment.SpecialFolder.MyComputer;
dlg.SelectedPath = "C:\Users\Almo\Desktop\";
dlg.ShowDialog();
Первый открывает диалоговое окно выбора файлов, начинающееся с C:Almo , второй запущен на MyComputer. Есть ли способ заставить это работать? Проблема в том, что местом сохранения моего приложения по умолчанию является рабочий стол, и я хочу, чтобы пользователь мог выбрать другое местоположение, и я хочу, чтобы диалоговое окно начиналось там, где находится текущее местоположение.
Комментарии:
1. Похоже, что MyComputer содержится в Desktop. :S
Ответ №1:
Попробуйте:
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
Комментарии:
1. Мой путь хранится в виде строки, и пользователь может выбрать любой каталог в MyComputer. Это решило бы особый случай, когда пользователь хочет сохранить на рабочем столе, и потребовало бы проверки исключений, чтобы убедиться, что это рабочий стол. Есть идеи, почему мое решение выше не работает?
Ответ №2:
Использовать :
dlg.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
это дает вам путь к рабочему столу для пользователя, который запускает код.
Комментарии:
1. Смотрите Комментарий к ответу Knvn.
Ответ №3:
По-видимому, рабочий стол в Win 7 фактически не существует в path
c:UsersusernameDesktop
Система притворяется, что это происходит в командной строке и в проводнике Windows. Но поскольку его там нет, часть SelectedPath, которая требует, чтобы ее путь находился в корневой папке, запрещает установку пути таким образом.