FolderBrowserDialog в сети компании для выбора подпапки

В моем приложении WPF пользователю нужно выбрать папку, путь к которой находится в сети компании. Я использую System.Windows.Forms.FolderBrowserDialog, и следующий код выполняется при нажатии кнопки:

        FolderBrowserDialog fbd = new FolderBrowserDialog();
        fbd.SelectedPath = "\\\\company.net\\data\\_Confidential";
        DialogResult result = fbd.ShowDialog();

FolderBrowserDialog при запуске

Когда открывается FolderBrowserDialog, система автоматически сканирует другие сетевые устройства, что вызывает следующую проблему:

FolderBrowserDialog через 3 секунды

Дерево сети заполняется другими устройствами, из-за чего мой SelectedPath прокручивается. Это довольно раздражает, когда пользователь начинает поиск специальной подпапки, потому что ему приходится прокручивать страницу вниз, иначе его клики по выбору могут попасть на только что добавленное устройство (потеря фокуса).

Как я могу избежать этой проблемы?

Мысли:

  • Могу ли я расширить/переписать System.Environment.SpecialFolder Enum и установить fbd.RootFolder = System.Environment.SpecialFolder.MySepcialNetworkPath;
  • Должен ли я получить доступ к сетевой папке с помощью другого диалога/элемента управления?
  • Должен ли я удалить «Обзор ...» Button в моем представлении и вместо этого сканировать весь путь \\\\company.net\\data\\_Confidential и предоставить поле со списком / другой элемент управления выбором (например, собственное дерево подпапок)?

person Frank    schedule 27.01.2016    source источник
comment
вы можете отфильтровать сетевое дерево, выполнив поиск в этом списке нужного имени.   -  person Zippy    schedule 27.01.2016
comment
Обязательно ли использовать System.Windows.Forms.FolderBrowserDialog? Почему вы не используете простой OpenFileDialog? wpf-tutorial.com/dialogs/the-openfiledialog   -  person StepUp    schedule 27.01.2016
comment
@StepUp FolderBrowserDialog, потому что мне нужно получить имя папки, а затем установить InitialDirectory следующего Microsoft.Win32.OpenFileDialog в выбранную папку. Кроме того, можно ли использовать OpenFileDialog с пустыми папками?   -  person Frank    schedule 27.01.2016


Ответы (2)


FolderBrowserDialog «принимает» настройки вашего ПК в зависимости от того, как настроено обнаружение сети на вашем ПК/сети. Таким образом, ваш опыт просмотра папок будет согласован с другими приложениями.

Хотя вы видите поведение FolderBrowserDialog по умолчанию, вы также можете посмотреть на это: https://stackoverflow.com/a/15440926/5793786 Решена проблема, похожая на вашу @Frank.

person Maarten van Stam    schedule 27.01.2016

Искал такую ​​же проблему, наткнулся на эту тему:

Как использовать OpenFileDialog для выбора папки?

Где пользователь использует CommonOpenFileDialog, доступный в пакете Nuget WindowsAPICodePack-Shell.

Это решило мою проблему, хотя и использует интерфейс OpenFileDialog.

Затем сетевой диск можно просто просмотреть.

person Elmer    schedule 21.11.2017