如何在禁用控件时更改C#中Listview控件的背景颜色?
文本框的颜色在禁用时可以更改,但是当禁用列表视图时,它会变为灰色,我们无法对其应用任何颜色。所以有一种方法可以更改Listview控件的背景颜色禁用??
答案 0 :(得分:3)
我尝试覆盖OnPaint
,OnPaintBackground
,但BackColor
仍未改变。即使WM_PAINT
可以更改它,但Item backcolor与listview BackColor不同。之前我曾考虑过这个解决方案,虽然它只是某种破解,但它似乎是唯一可行的解决方案,整个想法是改为使用Background Image
:
Bitmap bm = new Bitmap(listView1.ClientSize.Width, listView1.ClientSize.Height);
Graphics.FromImage(bm).Clear(listView1.BackColor);
listView1.BackgroundImage = bm;
如果你想创建自己的ListView
支持BackColor处于禁用状态,这里是类:
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;
}
}
}
}
如果有人有其他解决方案,我也想知道。