Дополнительно
Поиск каталога в C#
Как я могу представить пользователю элемент управления, позволяющий выбрать каталог?
Похоже, что в .net нет ни одного элемента управления, который бы это делал?
57
9
Класс FolderBrowserDialog является лучшим вариантом.
Если Вы ищете сборщика Папки, который больше походит на диалог Windows 7 со способностью скопировать и приклеить от textbox в основании и панели навигации слева с фаворитами и общими местоположениями, то Вы можете получить доступ к этому очень легким способом.
FolderBrowserDialog UI очень минимален:
! [введите описание изображения здесь] [1]
Но у Вас может быть это вместо этого:
! [введите описание изображения здесь] [2]
Here' s класс, который открывает сборщика папки стиля Vista, использующего.Net частный интерфейс 'IFileDialog', непосредственно не используя interop в кодексе (.Net заботится об этом для Вас). Это отступает к диалогу перед Vista если не в достаточно высокой Версии для Windows. Должен работать в Windows 7, 8, 9, 10 и выше (теоретически).
Я развивал это как очищенную версию [.NET Вин папка с 7 стилями избранный диалог] (http://www.lyquidity.com/devblog/? p=136) Биллом Седдоном [lyquidity.com] (http://lyquidity.com) (у меня нет присоединения). Я написал свое собственное, потому что его решение требует дополнительного класса Отражения это isn' t необходимый для этой сосредоточенной цели, основанного на исключении управления потоками использования, doesn' t прячут результаты про запас его требований отражения. Обратите внимание, что вложенный статический класс 'VistaDialog' то, так, чтобы его статические переменные отражения don' t пытаются быть населенными, если 'Выставочный' метод никогда не называют.
Это используется как так в Windows Form:
Вы можете, конечно, играть вокруг с его вариантами и какие свойства это выставляет. Например, это позволяет мультиизбранный в диалоге стиля Vista.
Кроме того, обратите внимание на то, что [Саймон Мурир дал ответ] (https://stackoverflow.com/a/15386992/57611), который показывает, как сделать ту же самую работу, используя interop против Windows API непосредственно, хотя его версия должна была бы быть добавлена, чтобы использовать более старый диалог стиля если в более старой версии Windows. К сожалению, я hadn' t нашел его пост все же, когда я обработал свое решение. Назовите свой яд!
Вы можете просто использовать класс
FolderBrowserDialog
из пространства именSystem.Windows.Forms
.Пожалуйста, don' t пытаются самокрутка с классом TreeView/DirectoryInfo. С одной стороны, есть много хороших особенностей, которые Вы получаете для свободного (символы/щелчок правой кнопкой мыши/сети) при помощи SHBrowseForFolder. Для другого есть край случаи/выгоды, о которых Вы не будете, вероятно, знать.
лучший способ сделать это и с несколькими выбор папки
использование:
Для намного большей функциональности, чем FolderBrowserdialog, как фильтрация, флажки, и т.д., смотрят на средства управления третьим лицом как < href =" http://www.ssware.com" > Shell MegaPack. Так как они - средства управления, таким образом, они могут быть помещены в Ваши собственные формы вместо того, чтобы появиться как модальный диалог.
или еще более лучше, Вы можете поместить этот кодекс в файл класса
И используйте его как это
Вы можете использовать TreeView в сочетании с классом DirectoryInfo.