Я сделал личным правилом наследовать каждый элемент управления пользовательского интерфейса перед его использованием. В прошлой жизни я всегда считал это одной из менее полезных вещей, которые вы могли бы сделать, потому что оправдание всегда казалось «я мог бы захотеть изменить шрифт на всех кнопках одновременно» ... мотивация, которая никогда не окупалась ... однажды ... когда-либо.
Однако два недавних проекта изменили мое мнение о практике. Во-первых, нам нужно было согласованное событие «ValueChanged», чтобы мы могли легко реализовать «грязный» флаг в наших формах без массивного оператора switch для выбора между событием TextChanged в Textbox или SelectedIndexChanged из ListBox и т. Д. мы просто хотели услышать одну последовательную вещь для всех элементов управления, и подклассы встроенных элементов управления купили нас довольно легко.
Во втором проекте были предприняты все усилия, чтобы обойтись с базовыми элементами управления, потому что ожидалось, что пользовательский интерфейс будет довольно простым, но через несколько месяцев стало очевидно, что они просто не собираются больше его сокращать, и мы приобрели контрольный пакет Telerik. Если бы мы изначально унаследовали все элементы управления, то изменение наших производных элементов управления для наследования от элементов управления Telerik привело бы к изменениям для нас в глобальном масштабе. Вместо этого нам пришлось выполнить поиск и замену во всех дизайнерах форм.
Итак, вот мой вопрос: каковы относительные сильные и слабые стороны
- Простое добавление класса и его наследование от элемента управления.
- Добавление нового «Пользовательского элемента управления» и наследование.
- Добавление нового «Компонента» и наследование.
В конце концов, все три имеют одинаковый эффект, вы получаете новый тип Баттона, чтобы надеть ваши формы. Я видел, как все три использовались разными людьми, и все, кажется, думают, что их путь самый лучший. Я подумал, что должен обсудить это с StackOverflow, и, может быть, мы сможем придумать консенсус как сообщество о том, какой из них является «правильным».
Примечание: у меня уже есть личное мнение о том, что это "правильно", но я хочу посмотреть, что думает мир.