Существует Windows® API Code Pack for Microsoft® .NET Framework
archive.msdn.microsoft.co... Там есть класс CommonOpenFileDialog, реализующий IFileOpenDialog.
Проблема 1: Если выделены папка или папки и файлы или несколько папок, то по нажатию на кнопку "Open" открывается первая выделенная папка.
Задача: необходимо закрыть окно по нажатию на кнопку "Open", если количество выделенных элементов > 0. (По умолчанию, при выделенной папке, нажание на Open открывает содержимое этой папки).
Проблема 2: Метод IFileOpenDialog.GetSelectedItems([MarshalAs(UnmanagedType.Interface)] out IShellItemArray ppsai) возвращает первую выделенную папку, если выделены несколько папок или выделены папки и файлы.
Задача: Создать метод, который вернет все выделенные элементы в виде списка IShellItem в окне IFileOpenDialog вне зависимости от выделения.
Задача относится к реализации окна через интерфейс IFileOpenDialog!