【问题标题】:WinForms Application ThemeWinForms 应用程序主题
【发布时间】:2010-11-03 13:59:33
【问题描述】:

是否有任何方法可以仅为我的 WinForms 应用程序更改 SystemColors.ButtonHighlight 颜色?我想给它一个不同的主题。

谢谢。

【问题讨论】:

    标签: .net winforms custom-controls


    【解决方案1】:

    DotNetSkin 提供了一个 DLL,可以很容易地在应用程序中使用它来更改完整的主题,包括不依赖于 Windows 主题的应用程序的标题栏。

    那里提供了许多主题,或者您可以创建自己的主题或在您的应用程序中使用任何.msStyle 文件。

    【讨论】:

    • 我知道我们可以购买换肤工具,但我们需要提供没有任何第三方组件的解决方案。
    【解决方案2】:

    那就太好了,不是吗?

    恐怕唯一的选择是自己绘制按钮(使用 Reflector 看看 WinForms 是如何绘制它的),或者购买第三方皮肤框架。

    【讨论】:

    • 哇,它需要对每个单独的 WinForms 控件进行子类化,覆盖 OnPaint() 并将函数体替换为从 Reflector 复制的内容?
    • 由于绘图代码非常复杂(使用各种按钮类型的适配器等),您将无法从 Reflector 复制。这个想法只是为了看看它如何适用于简单的案例。是的,您必须在项目中将所有出现的 Button 替换为 MyButton。换肤框架是更好的解决方案,因为他们已经完成了所有繁重的工作。
    【解决方案3】:

    我认为您必须创建一个继承按钮的自定义控件,然后覆盖 OnPaint 事件并自己绘制 ButtonHighlight(可能还有按钮的其余部分)。

    【讨论】:

    • 我在这个页面上驻扎了太久,没有看到其他人给出了相同的答案,抱歉。但是,我在使用具有换肤功能的 DotNetBar 控件时获得了很好的体验。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    相关资源
    最近更新 更多