Как я использую класс OpenFileDialog (в C#, WPF и т.д.) таким образом, что он открывается на Сетевой зоне как значение по умолчанию?
Это не работает:
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "Network";
Я также пытался иметь "\" как InitialDirectory, и это не работало.
Я также пытался иметь "\\" как InitialDirectory, и это не работало также.
Я не пробовал, но это должно работать:
openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts);
Environment.GetFolderPath
возвращает путь, соответствующий Environment. Запись перечисления SpecialFolder
в виде строки.
Environment.SpecialFolder.NetworkShortcuts
определяется как
Каталог файловой системы, содержащий объекты ссылок, которые могут существовать в виртуальной папке Мое сетевое окружение.
Настройка диалогового окна открытия файла из журнала Microsoft MSDN Magazine содержит много информации в диалоговом окне. У меня не было возможности прочитать все это, но это привлекло мое внимание:
Панель пользовательских мест
...Вам понадобится запись REG_SZ, если имя папки является абсолютным или относительный путь. Вам необходимо использовать номер папки, если вы хотите настроить таргетинг на особую папку (список см. На Рисунке 6). В этом случае требуется запись REG_DWORD.
Рисунок 6
Идентификаторы папок
Идентификаторы папки
0 Рабочий стол
2 Папка "Программы" в меню "Пуск"
3 Панель управления
4 принтера
5 Мои документы
6 избранных
7 Папка автозагрузки в меню "Пуск"
8 последних файлов
9 Отправить на
10 корзин
12 Меню "Пуск"
17 Мой компьютер
18 Мое сетевое окружение
20 Fonts
Я пропустил целую кучу материала (потому что это очень длинная статья), но похоже, что вы можете установить значение ID равным 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();
Все еще показывает все слева:
Это работало в предыдущих версиях Windows:
Еще одна вещь, похоже, Microsoft изменила расположение ComDlg32, я попробовал оба места, но безуспешно.