2012-08-08 181 views
30

是否可以更改C#中WinForm標題欄的顏色?更改WinForm中標題欄的顏色

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

您的意思是[標題欄](http://en.wikipedia.org/wiki/Title_bar)或標題欄文本? – 3aw5TZetdf 2012-08-08 10:15:37

+0

是的,我想改變標題欄backcolor ... – Aravind 2012-08-08 10:58:18

+1

注:根據操作系統的版本和用戶的配色方案,這可能是一個非常糟糕的主意。至少應考慮顏色方案,將光線和黑暗顛倒過來,並決定如何調整背景顏色以適應這種方案。 – ToolmakerSteve 2016-01-04 22:01:04

回答

14

我解決了這個問題。這是代碼:

[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); 
     } 
    } 
} 
+0

這是行不通的。標題欄仍然灰色 – SpicyWeenie 2013-10-16 02:53:58

+3

不適用於Windows 8至少 – SpicyWeenie 2013-10-16 03:14:36

+4

在Windows 7上試過。問題是:綠色矩形隱藏窗體標題並最小化/最大化/關閉bottons;不繪製左邊界,右邊界和底部邊界;邊框大小取決於特定的Windows版本。無論如何,這是一個有趣的嘗試! – bluish 2013-11-14 14:27:00

6

你可以做的是FormBorderStyle屬性設置爲None,做你想要使用GDI形式什麼都。

8

使用Drawing Custom Borders in Windows Forms項目從CodePlex。該項目是一個小型庫,它可以擴展Windows窗體,並能夠自定義窗口的非客戶區域。

+1

CodePlex正在關閉。由於這本質上是一個鏈接唯一的答案,一旦發生這種情況,它就沒有價值。 – IInspectable 2017-08-24 20:45:59

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/17137919) – Patrick 2017-08-25 00:02:06

+0

@IInspectable「目前還沒有任何計劃有檔案結束日期。」所以...仍然不是理想的答案,但也不完全沒有價值。 – 2017-08-25 08:38:39

-13

這是很容易做到:

  1. 在桌面上單擊鼠標右鍵,然後選擇「個性化」。

  2. 點擊屏幕底部的「窗口顏色」圖標。

  3. 選擇你的新顏色。

    如果您的計算機配置爲使用Aero主題,則可以選擇其中一種標準顏色或混合使用自己的一種顏色。

    如果您使用的是經典主題,則會看到一個可用於設置顏色的「窗口顏色和外觀」對話框。點擊標題欄中的示例桌面,即「Active Window」,然後使用「Color 1」和「Color 2」下拉框選擇一種新顏色。

我只能假設這是你的意思,因爲有絕對沒有任何藉口只改變你的應用程序的標題欄的顏色。這是一個全系統設置的原因。

始終服從用戶的喜好。如果他們希望標題欄的顏色不同,他們會選擇不同的顏色。

+0

請看我的答案..完美的作品..:) – Aravind 2012-08-21 05:51:45

+27

-1:當程序員想要做某事時,他/她有其原因。答案不能是「沒有理由要這樣做」。 – ThunderGr 2014-09-02 13:04:38

+0

他/她有的「原因」是錯誤的或誤導的。 – 2014-09-03 03:28:09