我想在博客文章 How do I apply custom color to the title bar in Windows 10 Universal apps? 中制作此内容。
但是这个方法适用于Universal Windows Platform(UWP)应用程序,我的项目适用于Windows Forms,可以适用于Windows 7及更高版本,但如果它在Windows 10上运行,我想改变颜色标题栏。
特定颜色为RGB(R 255,G 141,B 105)。
答案 0 :(得分: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。我过去尝试了其中一些(例如google为“C#自定义标题栏”)。他们中的大多数都工作,并且在第一眼看上去很好,但我从未找到100%完整的项目。
另一种方法是 - 我希望你会选择那个 - 去第三方图书馆已经通过PInvoke-mud并实现了一些你可以使用的自定义表格。在我看来,DevExpress Windows Forms Suite是Windows Forms最先进的组件套件,但需要付出代价。我也使用了Krypton Toolkit,同时它也是开源的。这是非常好的和深思熟虑的,但到目前为止还没有提供DevExpress的功能丰富。还有更多套房,例如Telerik或Infragistics。
然而,它们都带有大量您可能根本不需要的功能。但是他们提供了带有自定义标题栏的漂亮表单(大多数都是可换肤的),你可以自己编辑(我不知道Telerik和Infragistics的情况也是如此)。
所以我的建议是评估您需要具备哪些功能集以及您希望为组件支付的内容(如果有)。然后你可以决定你可以去哪个库。从DevExpress的功能丰富的套件到像Krypton这样的小型项目,甚至是具有较小焦点的非常单独的项目,例如Material Skin。后者是一套非常漂亮且独特的控件(和自定义形式),可以从Google实现Material设计。这非常酷,但如果您打算使用强大的网格和报告构建业务应用程序,Material Skin对您来说太瘦了。