0
如何禁用控件時在C#中更改Listview控件的背景顏色?禁用時更改列表視圖c#的背景顏色
禁用了文本框的顏色,但是當禁用了列表視圖時,它變爲灰色,我們無法對其應用任何顏色。是否有方法在禁用時更改Listview控件的背景顏色??
如何禁用控件時在C#中更改Listview控件的背景顏色?禁用時更改列表視圖c#的背景顏色
禁用了文本框的顏色,但是當禁用了列表視圖時,它變爲灰色,我們無法對其應用任何顏色。是否有方法在禁用時更改Listview控件的背景顏色??
我試過重寫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;
}
}
}
}
如果有人有另一種解決辦法,我想也知道。
我採取了一種不同的方法。我只是禁用了ListView上的事件(拖放,單擊事件)在一組布爾屬性上,聲明禁用了它。因此,listview不會變灰,而且拖放功能,點擊全部禁用。 – Sujay