2015-03-19 3 views
0

Я использую стороннюю библиотеку Windows Forms, у которой есть некоторые параметры формы, такие как создание окон формы как Office Forms (класс Office2007Form) или как Metro Forms (класс MetroForm). Библиотека создана SyncFusion.C# Что-то вроде динамического наследования для Windows Forms?

https://www.syncfusion.com/products/windows-forms/office2007form

https://www.syncfusion.com/products/windows-forms/metroform

К сожалению, это не единственный класс формы, где я могу установить тему через свойство (что-то вроде: SyncFusionForm.Theme = Metro). Вместо этого классы являются отдельными и как таковые, если я хочу поддерживать обе темы, мне приходится создавать повторяющиеся формы для каждой темы с теми же элементами управления и почти идентичным кодом.

Есть ли способ, которым я могу динамически установить что-то подобное, возможно, путем моделирования множественного наследования с интерфейсами? У меня нет источника для классов форм, поэтому мои параметры не слишком гибкие. Чтобы создать тематическую форму SyncFusion, я в настоящее время просто создаю форму Windows и меняю базовый класс на «Form» на «Office2007Form» или «MetroForm», а затем есть несколько свойств, которые я задал для цвета и т. Д.

Пожалуйста, дайте мне знать, если у кого-то есть представление о том, как я могу это сделать, не реплицируя свои элементы управления и код. Заранее спасибо!

ответ

1

Моим первым инстинктом было бы иметь все на UserControl. Затем вы добавляете элемент управления пользователя в экземпляр Office2007Form или MetroForm по мере необходимости.

Я придерживаюсь принципа дизайна рисунка «предпочтение композиции над наследованием»

+0

большое спасибо! Такое простое решение проблемы, которая вызывала у меня много разочарований. – tjsmith