Как создать настраиваемый диалог открытия файла в C # - PullRequest
4 голосов
/ 20 октября 2011

Как можно создать пользовательский элемент управления, который имеет те же функциональные возможности (наряду с некоторыми расширенными функциями) OpenFileDialog в C #? Я следовал за этим , но не смог найти решение своей проблемы.

Мое требование - добавить дополнительную кнопку в диалоге. Если эта кнопка нажата, родитель должен быть уведомлен так же, как кнопки ok и cancel.

Ответы [ 3 ]

2 голосов
/ 20 октября 2011

OpenFileDialog является классом sealed, и поэтому не может наследоваться или расширяться.Лучше всего было бы написать собственный диалог открытия файла.

С другой стороны, класс FileDialog не запечатан, так что вы можете наследовать от него и сделать необходимыенастройки.См. http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx для получения дополнительной информации

1 голос
/ 02 октября 2013

Скорее всего, для этого вам понадобится простой интерфейс Windows. На высоком уровне вы делаете это:

  1. Создать экземпляр IFileOpenDialog.
  2. Запросите это для ссылки на интерфейс IFileDialogCustomize.
  3. Используйте метод AddPushButton, чтобы добавить свою кнопку.
  4. Вызовите Advise на интерфейсе IFileOpenDialog, чтобы зарегистрировать интерфейс для обработки событий. Этот интерфейс IFileDialogControlEvents и реализован вами. Вы должны реализовать как этот интерфейс, так и IFileDialogEvents.
  5. Ваш метод IFileDialogControlEvents.OnButtonClicked вызывается при нажатии кнопки.

Это доступно только в Vista. Если вам нужна поддержка XP, вам нужно использовать GetOpenFileName и предоставить шаблон ресурса для своей настройки. Это совсем не весело, особенно из управляемого кода! Библиотека C ++ / CLI делает это немного более управляемым.

1 голос
/ 20 октября 2011

OpenFileDialog - это встроенная функция Windows (это вообще не .NET), поэтому ее расширение - довольно нетривиальная задача.Почему бы вам просто не создать его с нуля или не искать какие-либо существующие решения?

...