c# - 在 Windows 窗体应用程序中控制继承以获得一致的外观

标签 c# .net winforms

我正在构建一个 Windows 窗体应用程序,其中所有模块的外观非常一致是非常重要的。除了标准的 .NET 控件外,它还使用了来自不同供应商的大量第三方控件。我希望能够一次性更改应用程序的整个外观,可能需要升级软件版本。非常像换肤,但一般来说,我发现只有当我拥有来自多个供应商的控件时,第三方提供商的换肤功能才能很好地与他们的控件集配合使用。

我计划构建一套完整的用户控件,这些控件继承自 .NET 控件或相关的第三方控件,并且仅使用我们的控件集。这样我可能必须创建很多控件(例如 Text、DropDown、List、Grid、DTPicker 等等),但我想我会对外观有一个合理的控制,即我可以传播任何更改基础(例如,在所有地方使用 Tahoma 字体而不是 MS Sans Serif),只需重建完整的应用程序。

我还认为,仅在整个应用程序中更改字体的能力,以及其他功能,几乎需要继承所有类型的控件。

问题:

  1. 您认为这是在整个应用程序中实现一致外观的正确方法(控制继承)吗?

  2. 您是否支持将一次性更改整个应用程序字体的能力作为一项好的要求?

非常感谢建议和评论。

最佳答案

1).恕我直言,您将拥有庞大的层次结构。在我看来,最好为控件组提供适配器。

例如,Infragistics 具有复杂且在许多方面不合逻辑的继承层次结构。 如果我必须快速实现换肤,我会在通用窗体(或其他容器)类中实现换肤逻辑,而不是创建大量自己的控件。

关于c# - 在 Windows 窗体应用程序中控制继承以获得一致的外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3676084/

相关文章:

c# - 在 Windows 身份验证成功后运行 Excel 文件

c# - JustMock:通过示例模拟 ToString 评估

c# - 从静态工厂类访问 ASP.NET Core DI 容器

c# - Visual Studio 大型解决方案中最喜欢的项目

.net - 为什么ToString()舍入我的 double 值?

c# - 检查一个点是否在旋转的矩形中(C#)

c# - 如何将 2 个 CollectionViewSource 绑定(bind)到 GridView

.net - FirstOrDefault()、SingleOrDefault()、Any() 等...哪一个最快?

c# - 我在哪里可以获得这个选择文件夹对话框?

wpf - 在 WPF 窗口中嵌入 WinForms 图形