更改 WinForm 中标题栏的颜色
Posted
技术标签:
【中文标题】更改 WinForm 中标题栏的颜色【英文标题】:Changing the color of the title bar in WinForm 【发布时间】:2012-08-05 10:23:34 【问题描述】:是否可以在 C# 中更改 WinForm 标题栏的颜色?
__________________________
[Form1_______________-|[]|X] <- I want to change the color of this
| |
| |
| |
|__________________________|
【问题讨论】:
您是指title bar 还是标题栏文字? 是的,我想更改标题栏背景色... 注意:根据操作系统的版本和用户的配色方案,这可能是一个非常糟糕的主意。至少要考虑明暗颠倒的配色方案,并决定如何调整背景颜色以适应此类方案。 这能回答你的问题吗? WinForms Dark title bar on Windows 10 @Matt 那是 Win10 特有的。这不是(并且每个解决方案都不适用于其他解决方案)。 【参考方案1】:您可以将FormBorderStyle
属性设置为None
,然后使用GDI 对表单做任何您想做的事情。
【讨论】:
这会从表单中删除所有内容,留下一个填充的矩形。然后一切都由你来实施——你完全从头开始。也许对全屏运行的游戏设计有好处,但对其他任何事情都无用。【参考方案2】:这很容易做到:
右键单击桌面,然后选择“个性化”。
单击屏幕底部的“窗口颜色”图块。
选择你的新颜色。
如果您的计算机配置为使用 Aero 主题,您可以选择一种标准颜色或混合您自己的一种颜色。
如果您使用的是经典主题,您会看到一个“窗口颜色和外观”对话框,您可以使用它来设置颜色。单击示例桌面的标题栏,名为“活动窗口”,然后使用“颜色 1”和“颜色 2”下拉框选择一种新颜色。
我只能假设这就是您的意思,因为绝对没有任何借口可以只更改应用程序标题栏的颜色。这是系统范围的设置是有原因的。
始终服从用户的喜好。如果他们希望您的标题栏具有不同的颜色,他们会选择不同的颜色。
【讨论】:
-1:当程序员想做某事时,他/她有它的理由。答案不能是“没有理由想要这样做”。 他/她/它的“理由”是错误的或被误导的。 这不是你判断的。你要么帮忙,要么不帮忙。你可以对他的问题发表评论,告诉他你的意见。您的判断不是有用的答案。 这不是问题的答案。 (我同意按照问题的要求去做是一个非常糟糕的主意,但这是一个不同的讨论。或者正如所指出的,是评论,而不是答案。) 组织/客户要求是这样做的一个理由。是的,他们可能会被误导,但他们永远不会错,即使他们是:)【参考方案3】:我解决了这个问题。这是代码:
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("User32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hWnd);
protected override void WndProc(ref Message m)
base.WndProc(ref m);
const int WM_NCPAINT = 0x85;
if (m.Msg == WM_NCPAINT)
IntPtr hdc = GetWindowDC(m.HWnd);
if ((int)hdc != 0)
Graphics g = Graphics.FromHdc(hdc);
g.FillRectangle(Brushes.Green, new Rectangle(0, 0, 4800, 23));
g.Flush();
ReleaseDC(m.HWnd, hdc);
【讨论】:
在 Windows 7 上试过。问题是:绿色矩形隐藏表单标题和最小化/最大化/关闭按钮;不绘制左、右和下边框;边框大小取决于特定的 Windows 版本。无论如何,这是一次有趣的尝试! 在 Windows 10 64bit 中对我不起作用,有人有解决方法吗?【参考方案4】:如果您想拥有与其他人不同的标题栏,请考虑获得this 的社区许可证
我试过一次,它成功了。我只需要安装它并将Form
更改为SfForm
这是 using 语句
using Syncfusion.WinForms.Controls;
WinForms 的引用是Syncfusion.Core.WinForms
和Syncfusion.Shared.Base
【讨论】:
以上是关于更改 WinForm 中标题栏的颜色的主要内容,如果未能解决你的问题,请参考以下文章