【问题标题】:c# Change title bar color for Windows 10c# 更改 Windows 10 的标题栏颜色
【发布时间】:2017-05-27 18:55:09
【问题描述】:

我想像博客文章中那样做这个How do I apply custom color to the title bar in Windows 10 Universal apps?

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

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

【问题讨论】:

  • 您可以在 WinForms 中通过创建无边框窗口并模仿标题栏、图标和控制框来模仿这一点。这有点涉及,因为您有程序拖动表单、调整大小等。这将是一个广泛的答案。使用 P/Invoke 在客户区域之外进行绘制更容易,但不能移植(编辑:虽然您只想要现代版本的 Windows,所以这应该不是问题)并且可能更难调试。

标签: c# winforms windows-10


【解决方案1】:

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

边框和标题栏的东西被称为非客户区和even if it is possible, it is not fun to paint in there,因为你必须关心很多东西,比如激活/停用的窗口、鼠标效果,当然还有 Windows 版本特定的东西,比如Aero 效果、DWM 管理器、视觉效果(可用或不可用)、RDP/Citrix 和其他远程/虚拟化渲染设置等。

如果您想了解更多关于非客户区的信息,请查看Vista Aero ToolStrip on Non-Client Area

有一件事情你可以在没有第三方库的情况下很快完成,但要做到这一点非常困难,请注意:创建一个无边界表单 (FormBoderStyle=None) 并自己处理事情,比如调整大小。然后,您可以完全控制您的表单及其标题。好消息:在非客户区绘画没有PInvokes

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

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

网络上有一些方法,例如like this one。我过去曾尝试过其中的一些(例如,谷歌搜索“C# 自定义标题栏”)。他们中的大多数都可以工作并且第一眼看起来不错,但我从来没有找到一个 100% 完整的项目。

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

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

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

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2017-11-02
    • 1970-01-01
    • 2011-03-03
    相关资源
    最近更新 更多