是否可以在C#中更改WinForm标题栏的颜色?
__________________________
[Form1_______________-|[]|X] <- I want to change the color of this
| |
| |
| |
|__________________________|
答案 0 :(得分:17)
我解决了这个问题。这是代码:
[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);
}
}
}
答案 1 :(得分:9)
您可以做的是将FormBorderStyle
属性设置为None
,然后使用GDI对表单执行任何操作。
答案 2 :(得分:8)
使用 CodePlex 中的Drawing Custom Borders in Windows Forms项目。该项目是一个小型库,可以扩展Windows窗体,并能够自定义窗口的非客户区域。
答案 3 :(得分:1)
如果您希望标题栏与其他标题栏不同,请考虑获取this的社区许可证
我尝试了一次,就成功了。我只需要安装它,然后将Form
更改为SfForm
这是using语句
using Syncfusion.WinForms.Controls;
WinForms的引用为Syncfusion.Core.WinForms
和Syncfusion.Shared.Base
答案 4 :(得分:-16)
这很容易做到:
右键单击桌面,然后选择“个性化”。
点击屏幕底部的“窗口颜色”图块。
选择新颜色。
如果您的计算机配置为使用Aero主题,您可以选择其中一种标准颜色,也可以自己混合使用。
如果您使用的是经典主题,则会看到可用于设置颜色的“窗口颜色和外观”对话框。单击样本桌面的标题栏,即名为“活动窗口”的桌面,然后使用“颜色1”和“颜色2”下拉框选择新颜色。
我只能假设这是你的意思,因为绝对只有 没有借口 才能更改应用程序标题栏的颜色。这是一个系统范围的设置。
始终遵守用户的偏好。如果他们希望你的标题栏颜色不同,他们会选择不同的颜色。