Визуальное наследование или пользовательский элемент управления?

У меня есть несколько форм в приложении .net для Windows, которые имеют общий набор текстовых полей и других элементов управления пользовательским вводом, каждая форма имеет одинаковый внешний вид, но каждую форму необходимо загружать и сохранять в разные таблицы базы данных.

Было бы лучше поместить элементы управления в базовую форму и наследовать от нее или создать пользовательский элемент управления, который будет помещаться в каждую форму?


person Community    schedule 12.10.2008    source источник


Ответы (4)


Обычно я предпочитаю элементы управления UserControl, так как они более гибкие — их можно использовать в контексте формы или в любом другом визуальном контексте для отображения или изменения данных. У меня было несколько случаев, когда мне приходилось менять дизайн своего пользовательского интерфейса из отдельного диалогового окна, чтобы редактировать что-то на встроенный элемент управления внутри основной формы или что-то в этом роде.

В остальном я бы сказал, что это дело вкуса.

person Phil Reif    schedule 12.10.2008

По-разному. Составная модель (с использованием пользовательского элемента управления) чище, но элемент управления не может знать о вызывающей форме, поэтому вам нужно передать логику в виде событий. Иногда это может привести к дублированию логики.

С помощью наследования вы можете реализовать общий код в базовом классе с некоторым переопределением в форме подкласса и реализовать гибкое взаимодействие. Но для этого все разработчики подкласса должны знать исходный код базового класса, что может стать хаотичным.

person Eugene Yokota    schedule 12.10.2008

Я использую оба метода, в зависимости от ситуации. Если у вас есть функциональная часть LOGIC, которую вы хотите просто поместить в форму без изменений, то я думаю, что пользовательские элементы управления подходят. Однако, если вы просто хотите продублировать и расширить общий пользовательский интерфейс для нескольких форм, тогда визуальное наследование, вероятно, будет лучшим вариантом.

person TheSmurf    schedule 12.10.2008

В зависимости от логики проще использовать пользовательские элементы управления, связанные с событиями. Если есть общие задачи, вы можете использовать базовый класс Server Control.

person Elementenfresser    schedule 05.03.2012