winform checkedlistbox 设置行颜色

时间:2023-03-08 16:40:02

重写OnDrawItem事件

public class ColorCodedCheckedListBox : CheckedListBox{
protected override void OnDrawItem(DrawItemEventArgs e)
{
base.OnDrawItem(e);
}
}

  自定义时,需要重新声明DrawItemEventArgs对象,然后调用base.OndrawItem方法。

DrawItemEventArgs e2 = new DrawItemEventArgs(e.Graphics, e.Font, new Rectangle(e.Bounds.Location, e.Bounds.Size), 
e.Index, (e.State & DrawItemState.Focus) == DrawItemState.Focus ? DrawItemState.Focus : DrawItemState.None, Color.Orange, this.BackColor);

如果想根据Item内容绘制不同样式的Item时,只需要在该事件中访问e.Index即可。

protected override void OnDrawItem(DrawItemEventArgs e)
{
if(e.Index%==)
{
DrawItemEventArgs e2 = new DrawItemEventArgs(e.Graphics, e.Font,
new Rectangle(e.Bounds.Location, e.Bounds.Size),
e.Index, (e.State & DrawItemState.Focus) == DrawItemState.Focus ? DrawItemState.Focus : DrawItemState.None, Color.Orange, this.BackColor);
base.OnDrawItem(e2);
}
else
base.OnDrawItem(e);
}