Визуальное наследование или пользовательский контроль? - PullRequest
5 голосов
/ 12 октября 2008

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

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

Ответы [ 4 ]

1 голос
/ 12 октября 2008

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

Кроме этого, я бы сказал, что это дело вкуса.

0 голосов
/ 05 марта 2012

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

0 голосов
/ 13 октября 2008

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

0 голосов
/ 12 октября 2008

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

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

...