在WinForm中更改标题栏的颜色

时间:2012-08-08 10:13:12

标签: c# .net winforms background titlebar

是否可以在C#中更改WinForm标题栏的颜色?

          __________________________
         [Form1_______________-|[]|X] <- I want to change the color of this
         |                          |
         |                          |
         |                          |
         |__________________________|

5 个答案:

答案 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.WinFormsSyncfusion.Shared.Base

答案 4 :(得分:-16)

这很容易做到:

  1. 右键单击桌面,然后选择“个性化”。

  2. 点击屏幕底部的“窗口颜色”图块。

  3. 选择新颜色。

    如果您的计算机配置为使用Aero主题,您可以选择其中一种标准颜色,也可以自己混合使用。

    如果您使用的是经典主题,则会看到可用于设置颜色的“窗口颜色和外观”对话框。单击样本桌面的标题栏,即名为“活动窗口”的桌面,然后使用“颜色1”和“颜色2”下拉框选择新颜色。

  4. 我只能假设这是你的意思,因为绝对只有 没有借口 才能更改应用程序标题栏的颜色。这是一个系统范围的设置。

    始终遵守用户的偏好。如果他们希望你的标题栏颜色不同,他们会选择不同的颜色。