2013-07-04 116 views
0

如何禁用控件時在C#中更改Listview控件的背景顏色?禁用時更改列表視圖c#的背景顏色

禁用了文本框的顏色,但是當禁用了列表視圖時,它變爲灰色,我們無法對其應用任何顏色。是否有方法在禁用時更改Listview控件的背景顏色??

回答

1

我試過重寫OnPaint,OnPaintBackground,但BackColor仍然沒有變化。即使WM_PAINT也可以更改它,但是項目背景與列表視圖BackColor不完全相同。我原以爲這個解決方案之前,雖然它僅僅是某種形式的黑客攻擊,但它似乎是唯一的工作解決方案,整個思路是使用Background Image代替:

Bitmap bm = new Bitmap(listView1.ClientSize.Width, listView1.ClientSize.Height); 
    Graphics.FromImage(bm).Clear(listView1.BackColor); 
    listView1.BackgroundImage = bm; 

如果你想創建自己的ListView它支持背景色在禁用狀態,這裏是類:

public class MyListView : ListView { 
    public override Color BackColor { 
     get { return base.BackColor;} 
     set { 
     base.BackColor = value; 
     if(BackgroundImage == null){ 
      Bitmap bm = new Bitmap(1,1); 
      bm.SetPixel(0,0,value); 
      BackgroundImage = bm; 
      BackgroundImageTiled = true; 
     } 
     } 
    } 
    public override Image BackgroundImage { 
     get { return base.BackgroundImage; } 
     set { 
      base.BackgroundImage = value; 
      if(value == null){ 
      Bitmap bm = new Bitmap(1,1); 
      bm.SetPixel(0,0,BackColor); 
      BackgroundImage = bm; 
      BackgroundImageTiled = true; 
      } 
     } 
    } 
} 

如果有人有另一種解決辦法,我想也知道。

+1

我採取了一種不同的方法。我只是禁用了ListView上的事件(拖放,單擊事件)在一組布爾屬性上,聲明禁用了它。因此,listview不會變灰,而且拖放功能,點擊全部禁用。 – Sujay