57

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

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

4 回答 4

25

我解决了这个问题。这是代码:

[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);
        }
    }
}
于 2012-08-18T08:05:43.063 回答
13

您可以做的是使用 GDI 将FormBorderStyle属性设置为None并使用表单执行您想要的任何操作。

于 2012-08-08T10:15:23.143 回答
-4

如果您想拥有与其他人不同的标题栏,请考虑为此获得社区许可证

我试过一次,它奏效了。我只需要安装它并更改FormSfForm

这是使用语句

using Syncfusion.WinForms.Controls;

WinForms 的参考资料是Syncfusion.Core.WinFormsSyncfusion.Shared.Base

于 2020-02-14T00:37:17.117 回答
-46

这很容易做到:

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

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

  3. 选择你的新颜色。

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

    如果您使用的是经典主题,您将看到一个“窗口颜色和外观”对话框,您可以使用它来设置颜色。单击示例桌面的标题栏,名为“Active Window”,然后使用“Color 1”和“Color 2”下拉框选择一种新颜色。

我只能假设这就是您的意思,因为绝对没有理由只更改应用程序标题栏的颜色。这是一个系统范围的设置是有原因的。

始终服从用户的喜好。如果他们希望您的标题栏具有不同的颜色,他们会选择不同的颜色。

于 2012-08-09T01:01:54.587 回答