当控件被禁用时,如何在 C# 中更改 Listview 控件的背景颜色?
禁用时可以更改文本框的颜色,但是禁用列表视图时,它会变为灰色,我们无法对其应用任何颜色。那么有没有办法在禁用时更改 Listview 控件的背景颜色?
我已经尝试过覆盖OnPaint
,OnPaintBackground
但BackColor
仍然没有改变。甚至WM_PAINT
可以更改它,但项目背景颜色与列表视图背景颜色不同。我之前想过这个解决方案,虽然它只是某种黑客,但它似乎是唯一可行的解决方案,整个想法是使用 aBackground 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;
}
}
}
}
如果有人有其他解决方案,我也想知道。