Почему FolderBrowserDialog не разрешает использовать рабочий стол как SelectedPath, когда корневой каталог — это MyComputer?

#.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, которая требует, чтобы ее путь находился в корневой папке, запрещает установку пути таким образом.