我正在构建一个Windows窗体应用程序,其中所有模块的外观和感觉非常一致,具有非常高的优先级。除了标准的.NET控件之外,它还使用了来自不同供应商的许多第三方控件。我希望能够一次性改变应用程序的整体外观,可能是软件的升级版本。非常像皮肤,但通常我已经看到第三方提供商的皮肤功能只有在我有来自多个供应商的控件时才能很好地使用它们的控件集。
我计划构建一组完整的用户控件,这些控件继承自.NET控件或相关的第三方控件,并仅使用我们的控件集。这样我可能需要创建很多控件(例如Text,DropDown,List,Grid,DTPicker等等),但我想我会对外观有一个合理的命令,即我可以传播任何变化基础(例如,在所有地方使用Tahoma字体而不是MS Sans Serif)只需重建完整的应用程序。
我还认为,仅在应用程序中更改字体的能力就会使几乎所有类型的控件都被遗传。
问题:
您觉得这是一种正确的方法(控制继承),以便在应用程序中实现一致的外观和感觉吗?
您是否支持一次性更改整个应用程序字体的能力?
建议,评论非常感谢。
答案 0 :(得分:3)
1)。恕我直言,你将拥有庞大的等级制度。在我看来,最好是为控件组提供适配器。
例如,Infragistics使得不合逻辑的继承层次结构复杂化,并且在很多方面。 如果我必须快速实现皮肤,我在一个普通的形式(或其他容器)类中实现了皮肤逻辑,而不是创建大量自己的控件。答案 1 :(得分:2)
有没有机会使用WPF?我怀疑Windows Forms中控件开发的复杂性随着每个级别的继承呈指数级增长。
WPF提供内置/专为皮肤设计,更容易实现和维护。我强烈建议您探索该途径并尽可能使用WPF。
答案 2 :(得分:0)
对于Winforms,我知道一些控制集允许这样的事情。 Janus有一套很好的控件,可以用所谓的VisualStyleManager注册。更改StyleManager的主题将自动为所有控件设置外观。
我没有自己实现它会让你开心......只需继续花几美元购买Janus或其他组件。