【问题标题】:C# Do something like dynamic inheritance for Windows Forms?C# 为 Windows 窗体执行动态继承之类的操作?
【发布时间】:2015-03-19 03:33:25
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: c# winforms multiple-inheritance


    【解决方案1】:

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

    我遵循“优先组合优于继承”的设计模式原则

    【讨论】:

    • 非常感谢!一个让我很沮丧的问题的简单解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2014-05-24
    • 2011-06-25
    • 2022-08-20
    相关资源
    最近更新 更多