c# 更改 Windows 10 的标题栏颜色

Adr*_*val 0 c# winforms windows-10

我想按照博客文章如何将自定义颜色应用到 Windows 10 通用应用程序中的标题栏?

但此方法适用于通用 Windows 平台(UWP) 应用程序,而我的项目适用于 Windows 窗体,它可以适用于 Windows 7 及更高版本,但如果它在 Windows 10 上运行,我想更改标题栏的颜色。

具体颜色为RGB(R 255、G 141、B 105)。

Wae*_*her 5

Windows 窗体中没有这样的东西。基本上,您可以绘制的所有内容都在客户区域内,即除边框和标题栏之外的表单边界。

在此输入图像描述

边框和标题栏的东西被称为非客户区,即使有可能,在那里画画也不好玩,因为你必须关心很多东西,比如激活/停用的窗口、鼠标效果和当然,Windows 版本特定的东西,如Aero效果、DWM 管理器、视觉效果(可用或不可用)、RDP/Citrix 和其他远程/虚拟化渲染设置等。

如果您想了解有关非客户区的更多信息,请查看非客户区上的 Vista Aero ToolStrip

有件事你可以在没有第三方库的情况下很快完成,但要正确完成却很难,请注意:创建无边框表单 ( FormBoderStyle=None) 并自己处理事情,例如调整大小。然后您就可以完全控制表单及其标题。好处是:在非客户区域中没有用于绘画的PInvokes 。

缺点是您必须自己处理调整大小、最小化、最大化和关闭所有操作。不要低估这一点;最大化表单的方法有多种,例如: 您能处理所有这些方法吗?因此,可以单击“最大化”按钮,双击标题栏或将标题栏拖动到屏幕顶部。这些是您将来必须了解和支持的事情。

也许 Windows 提出了新的方法,然后你必须重新实现,否则有一天你的用户会责怪你。

网络上有一些方法,例如这样的方法。我过去尝试过其中一些(例如,谷歌搜索“C#自定义标题栏”)。他们中的大多数都能工作并且乍一看很不错,但我从未找到过 100% 完整的项目。

另一种方法是——我希望您会选择这种方法——使用第三方库,这些库已经通过 PInvoke-mud 实现了一些您可以使用的自定义表单。在我看来,DevExpress Windows Forms Suite是最先进的 Windows Forms 组件套件,但它是有代价的。我也经常使用Krypton Toolkit,同时它也开源了。它非常好并且经过深思熟虑,但到目前为止还没有提供 DevExpress 的丰富功能。还有更多类似TelerikInfragistics的套件。

然而,它们都带有大量您可能根本不需要的功能。但他们提供了带有自定义标题栏的漂亮表单(其中大多数是可换肤的),您可以自己编辑(我不知道 Telerik 和 Infragistics 是否如此)。

因此,我的建议是评估您需要拥有哪些功能集以及您想要为组件支付多少费用(如果有)。然后您可以决定可以去哪个图书馆。从功能丰富的 DevExpress 套件到像 Krypton 这样的小型项目,甚至到焦点较小的非常个人的项目,例如Material Skin 。后者是一组非常漂亮且独特的控件(以及自定义表单),用于实现 Google 的材料设计。这非常酷,但是如果您计划构建一个具有强大网格和报告的业务应用程序,Material Skin 对您来说太薄弱了。