Я бы не отказался от сложности OpenFileDialog. Не так просто построить тот, который действительно работает. Когда вы создаете свои собственные, это не «нормальный» диалог, и в результате он путает пользователей. Это верно, даже если вы делаете это хорошо, что сложно. Поэтому я предлагаю вам продолжать расширять то, что уже есть, вместо того, чтобы писать что-то новое.
Проверьте this article for an extension of OFD, который может быть/может быть изменен, чтобы выполнить именно то, что вы хотите. Существует обратный вызов, который вы пишете на C#, который отвечает на выбор пути.
Относно: FolderBrowserDialogEx - аналогичное расширение на FolderBrowserDialog. Несмотря на название, вы можете настроить его для поиска файлов, а также папок. Существует обратный вызов, который вызывается, когда выбрано что-то (папка, файл), и внутри этого обратного вызова вы можете делать то, что вам нужно сделать. Например, загляните внутрь файлов в папку и заполните список файлов для отображения только этими файлами.
Другой вариант, который вы можете рассмотреть, это dialog library from Ookii. Это реализация OpenFileDialog с открытым исходным кодом и включает в себя COM-обертки для всех новых элементов диалога в Vista. Используя эту библиотеку, вы можете открыть Vista OpenFileDialog и получить события из интерфейса IFileDialogEvents в коде C#. Одним из таких событий является OnFolderChange(). Внутри обработчика вы можете вызвать IFolder.GetFolder(), который доставит вам IShellItem, который даст вам папку, в которую пользователь переходит. Следующим шагом будет разбиение на разделы и потенциальная фильтрация набора файлов, который я получаю у читателя ...
интересно! Я проверю это завтра. благодаря! – djcouchycouch