2009-11-29 263 views
7

如何更改ListView的標題的背景顏色?更改Winform ListView標題的背景顏色

+1

您將需要通過覆蓋Paint事件來實現自定義繪圖。 – 2009-11-29 05:08:43

+0

重寫Paint方法在ListView上不做任何事情。您需要使用@David建議的OwnerDraw機制。請記住,這樣做會從頭控件中刪除所有樣式 - 沒有熱項目,沒有排序指示符,沒有漸變背景。 – Grammarian 2009-11-30 20:14:24

回答

7

您可以通過將列表視圖的OwnerDraw屬性設置爲true來完成此操作。

然後這允許您爲listview的繪製事件提供事件處理程序。

上有MSDN

下面一個詳細的例子是一些示例代碼來設置標題顏色爲紅色:

private void listView1_DrawColumnHeader(object sender, 
              DrawListViewColumnHeaderEventArgs e) 
    { 
     e.Graphics.FillRectangle(Brushes.Red, e.Bounds); 
     e.DrawText(); 
    } 

我認爲(但很高興被證明是錯誤的),隨着的OwnerDraw集爲真,您還需要爲其他繪製事件提供處理程序,其中包含默認實現,如下所示:

private void listView1_DrawItem(object sender, 
            DrawListViewItemEventArgs e) 
    { 
     e.DrawDefault = true; 
    } 

我當然沒有爲了使列表視圖繪製沒有的項目。

+0

作爲一個警告詞,因爲花了我一個多小時才弄明白,不要在drawcolumnheader中放置MSGBOX命令!它掛起vb.net - 這在其他情況下運行良好 – cardmagik 2016-02-21 22:27:27

5

我知道這對派對來說有點晚,但我仍然看到這篇文章,這會幫助我。這是大衛提供

using System.Windows.Forms; 
using System.Drawing; 

//List view header formatters 
public static void colorListViewHeader(ref ListView list, Color backColor, Color foreColor) 
{ 
    list.OwnerDraw = true; 
    list.DrawColumnHeader += 
     new DrawListViewColumnHeaderEventHandler 
     (
      (sender, e) => headerDraw(sender, e, backColor, foreColor) 
     ); 
     list.DrawItem += new DrawListViewItemEventHandler(bodyDraw); 
} 
private static void headerDraw(object sender, DrawListViewColumnHeaderEventArgs e, Color backColor, Color foreColor) 
{ 
    e.Graphics.FillRectangle(new SolidBrush(backColor), e.Bounds); 
    e.Graphics.DrawString(e.Header.Text, e.Font, new SolidBrush(foreColor), e.Bounds); 
} 
private static void bodyDraw(object sender, DrawListViewItemEventArgs e) 
{ 
    e.DrawDefault = true; 
} 

然後在你的形式構造函數中調用這個代碼有點抽象應用

public Form() 
{ 
    InitializeComponent(); 
    *CLASS NAME*.colorListViewHeader(ref myListView, *SOME COLOR*, *SOME COLOR*); 
} 

只需更換*類名*與任何類,你把代碼中的第一位和*某種顏色*的某種顏色。

//Some examples: 
Color.white 
SystemColors.ActiveCaption 
Color.FromArgb(0, 102, 255, 102); 

好運所有!