2010-11-30 3 views
1

можно выбрать несколько файлов, используя OpenFileDialog. (настройка multiselect как истина)multi select folders and files

Вопрос в том, как выбрать несколько файлов и папок одновременно?

Я знаю, что такое FolderBrowseDialog, я знаю, что должен держать Ctrl или shift! : D

Предположим, папка содержит 5 папок и 2 файла, сценарий должен выбрать, например, 1 из файлов и 2 папки.

Я не знаю, почему люди голосуют за этот вопрос !!

----------------- Редактировать --------------------

допускают OpenFileDialog, вы можете выбрать столько файлов, сколько хотите в папке, хорошо? Я хочу что-то подобное, но с возможностью выбора папок тоже! , так как OpenFileDialog возвращает выбранные имена файлов в массиве FileNames, которые возвращают что-то вроде массива SelectedPaths, который содержит имена файлов и пути к папкам.

+0

Как именно вы предполагаете, что такой пользовательский интерфейс должен выглядеть? Если пользователю разрешено выбирать файлы A, B и C из папки X, то файл D из папки Y, а затем всю папку Z? Для такой функциональности вам, вероятно, придется сворачивать самостоятельно. – Pedery 2010-11-30 17:00:34

+0

Предположим, что папка содержит 5 папок и 2 файла, сценарий состоит в том, чтобы выбрать, например, 1 из файлов и 2 папки. – 2010-11-30 17:02:10

+0

@HPT: это вызывает некоторую двусмысленность, что делать, когда выбрана одна папка, и пользователь нажимает OK. Введите папку или примите ее в качестве выбора? (Некоторые новые - пользовательские? - диалоги выбирают последний, и позволяют только двойной щелчок для навигации по папке. Намного проще в использовании, чем диалог ShBrowseForFolder, но я полностью счастлив от зависимости от мыши) – peterchen 2010-11-30 17:05:46

ответ

1

Common Item Dialog (который заменяет диалоговое окно «Открыть общее имя файла») имеет несколько точек настройки. Я не пробовал, но, подключив IFileDialogEvents, вы сможете изменить поведение по мере необходимости. (Вы, возможно, придется добавить некоторые хитрости, можно было с OFNHookProc в диалоге файла в стиле XP)


Даже если это означает, что чтение много разочарований документации Microsoft, это preferrable над разработкой пользовательского диалога:

При копировании функции платформы вам необходимо скопировать все это.

Это означает, например, вставка файлов через Ctrl + V, Shift + Ins или контекстное меню, и если это расширение оболочки, которое я только что написал, не работает, я злюсь.

1

Я сделал это в приложении, которое я построил, и в итоге я использовал элемент управления TreeView и просто привязал жесткий диск к этому элементу управления - каждая папка имела TreeNode, вложенную в соответствии с структурой папок, а затем файлы на самом глубоком уровне.

Несмотря на то, что он голоден, пользователь может выбирать/отменять отдельные файлы, и довольно легко автоматически выбрать/отменить выбор всех детей, когда кто-то проверит родительскую папку.