Как использовать класс OpenFileDialog, чтобы он открывался в области «Сеть» по умолчанию? - PullRequest
5 голосов
/ 12 мая 2010

Как использовать класс OpenFileDialog (в C #, WPF и т. Д.), Чтобы он открывался в области сети по умолчанию?

Это не работает:

  OpenFileDialog openFileDialog1 = new OpenFileDialog();
  openFileDialog1.InitialDirectory = "Network";

Я также пытался использовать "\" в качестве InitialDirectory, но это не сработало.

Я также попытался использовать "\\" в качестве InitialDirectory, но это тоже не сработало.

Ответы [ 2 ]

8 голосов
/ 13 мая 2010

Я не пробовал, но это должно работать:

openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts);

Environment.GetFolderPath возвращает путь, соответствующий записи перечисления Environment.SpecialFolder в виде строки.

Environment.SpecialFolder.NetworkShortcuts определяется как

Каталог файловой системы, содержащий объекты ссылки, которые могут существовать в Виртуальная папка My Network Places.

1 голос
/ 12 мая 2010

Настройка диалогового окна «Открыть файл» из журнала Microsoft MSDN содержит лот информации в диалоговом окне. У меня не было возможности прочитать все это, но это привлекло мое внимание:

Панель пользовательских мест
...

Вам понадобится запись REG_SZ, если имя папки является абсолютным или относительным путем. Вам нужно использовать номер, специфичный для папки, если вы хотите выбрать целевую папку (список см. На рисунке 6). В этом случае необходима запись REG_DWORD.

Рисунок 6

Идентификаторы папок

Папка ID
0 Рабочий стол
2 Папка «Программы» в меню «Пуск»
3 Панель управления
4 принтера
5 моих документов
6 избранных
7 Папка автозагрузки в меню Пуск
8 последних файлов
9 Отправить
10 Корзина
12 Меню Пуск
17 Мой компьютер
18 мест моей сети
20 шрифтов

Я пропустил всю кучу вещей (потому что это очень длинная статья), но похоже, что вы можете установить значение идентификатора 18, чтобы получить ваши места в сети. Однако, как указывает @Nelson, эта часть может выглядеть так, как будто она добавляет запись в панель, поэтому дважды проверьте ее перед использованием. Как я уже говорил перед постом, на который я ссылался, он содержит много информации, так что то, что вам нужно, вполне может быть где-то похоронено.

Обновление:

На ПК с Windows 7 это не работает. например:

OpenDialogPlaces o = new OpenDialogPlaces();
//o.Places.Add(18);
//o.Places.Add(5);
//o.Places.Add(6);
o.Init();
o.OpenDialog.ShowDialog();
o.Reset();

Все еще показывает все в левой руке:

enter image description here

Это работало в предыдущих версиях Windows:

enter image description here

Другое дело, что Microsoft изменила расположение ComDlg32, я пробовал оба места, но не повезло.

enter image description here

...