Наследование WinForms - PullRequest
       15

Наследование WinForms

2 голосов
/ 09 января 2012

Я уже некоторое время использую наследование форм, но без особых исследований со следующим подходом. Просто создайте новый класс вместо формы, унаследуйте от существующей формы и преобразуйте необходимые элементы управления в защищенные по мере необходимости. Дизайнер Visual Studio 2010 работает как шарм. Если требуется больше контроля, вы всегда можете переопределить базовые методы.

Я сейчас создаю общие формы следующим образом:
partial class EntityCollectionEditor < T > : Form where T : ISomeInterface < T >

Такие формы, когда они наследуются простыми не дизайнерскими классами, выдают следующую ошибку:
Невозможно отобразить конструктор для этого файла, поскольку ни один из классов внутри него не может быть спроектирован. Дизайнер проверил следующие классы в файле: XYZ. Базовый класс EntityCollectionEditor не может быть загружен. Убедитесь, что на сборку ссылались и что все проекты были построены.

Было бы неплохо быстрое решение, но я также ищу хороший ресурс / статью для самообразования.

1 Ответ

3 голосов
/ 10 января 2012

В настоящее время дизайнер winforms не поддерживает универсальные формы / элементы управления.

Единственное, что я использовал, - это создание определенного типа формы:

class GenericBaseForm<T> : Form
{ }

class IntForm : GenericBaseForm<Int>
{ }

class StringForm : GenericBaseForm<String>
{ }

Конкретные формы могутТеперь использовать в конструкторе.К сожалению, если у вас много конкретных форм, это, вероятно, не идеальное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...