C#为Windows Forms执行类似动态继承的操作吗?

时间:2015-03-19 03:33:25

标签: c# winforms multiple-inheritance

我正在使用第三方Windows窗体库,它具有一些窗体主题选项,例如使窗体窗口看起来像Office窗体(类Office2007Form)或类似Metro窗体(类MetroForm)。该库由SyncFusion制作。

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

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

不幸的是,没有一个表单类可以通过属性设置主题(类似于:SyncFusionForm.Theme = Metro)。相反,这些类是分开的,因此如果我想支持这两个主题,我必须为每个主题创建重复的表单,使用相同的控件和几乎相同的代码。

有没有什么方法可以通过模拟接口的多重继承来动态设置这样的东西?我没有表单类的源代码,因此我的选项不太灵活。要创建一个SyncFusion主题表单,我目前只是创建一个Windows窗体并将基类从“窗体”更改为“Office2007Form”或“MetroForm”,然后我为颜色设置了一些属性等...

如果有人在不复制我的控件和代码的情况下知道如何做到这一点,请告诉我。在此先感谢!

1 个答案:

答案 0 :(得分:1)

我的第一直觉是将所有内容都放在UserControl上。然后,根据需要将用户控件添加到Office2007Form或MetroForm实例。

我遵循设计模式原则,“赞成合成优于继承”#