Настройка OpenFileDialog в .Net - PullRequest
       23

Настройка OpenFileDialog в .Net

7 голосов
/ 05 ноября 2010

Необходимость создания настраиваемого .Net OpenFileDialog в Windows XP и Windows Vista / 7. Добавить новые элементы управления и т. Д. Есть ли способ настроить стандартный OpenFileDialog в .Net (в частности, WPF)? Я просмотрел такие решения, как OpenFileDialogEx , но все эти перехватчики WINAPI для меня неприемлемы. Может быть, кто-то знает способ извлечения родных диалогов через Reflection или что-то еще? Как реализован нативный OpenFileDialog в Windows Vista / 7? Это написано в WPF? Заранее спасибо.

С уважением, Павел.

Ответы [ 3 ]

4 голосов
/ 05 ноября 2010

Привыкай к этому, потому что это то, что нужно.OpenFileDialog не написан в WPF, диалог существует как неуправляемый код в Windows.Управляемая оболочка использует GetOpenFileName () в старых версиях, а COM-интерфейс IFileOpenDialog - в текущих.Для последнего интерфейс IFileDialogCustomize был разработан для настройки диалога.

Эти интерфейсы просты в использовании только из программы на C ++, классического бича программирования оболочки.Необходимость поддерживать машины с XP также является значительной головной болью, реально вы застряли в унаследованном диалоге через GetOpenFileName ().Что и делает этот кодовый проект.

3 голосов
/ 05 ноября 2010

Существует оболочка для OpenFileDialog в Windows API Code Pack . Это поможет вам преодолеть множество трудностей с P / Invoking. Вы можете использовать его из WPF, из Windows Forms, как угодно.

2 голосов
/ 21 декабря 2010

Вы можете взглянуть на эту CodeProject ссылку.

Это интересный способ создания практически любого файлового диалога, который вам может понадобиться. И автор включает ссылку на версию WPF, а также оригинальную статью, написанную для XP.

...