设置ListView控件颜色
整理如下:
将listview 的OwnerDraw 属性设置为 true 并且将 View 属性设置为 View. Details 时,将触发
ListViewDrawColumnHeader事件(包括ListView DrawItem事件、ListView DrawSubItem事件)自己画背景色,下面代码可以分别对3个列头(ColumnHeader)进行重画,Item与SubItem未进行重画.
-
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
-
{
-
if (e.ColumnIndex == 0)
-
{
-
e.Graphics.FillRectangle(Brushes.DarkGray, e.Bounds); //采用特定颜色绘制标题列,这里我用的灰色
-
e.DrawText(); //采用默认方式绘制标题文本
-
}
-
-
else if (e.ColumnIndex == 1)
-
{
-
e.Graphics.FillRectangle(Brushes.DarkGray, e.Bounds); //采用特定颜色绘制标题列,这里我用的灰色
-
e.DrawText(); //采用默认方式绘制标题文本
-
}
-
-
else if (e.ColumnIndex == 2)
-
{
-
e.Graphics.FillRectangle(Brushes.DarkGray, e.Bounds); //采用特定颜色绘制标题列,这里我用的灰色
-
e.DrawText(); //采用默认方式绘制标题文本
-
}
-
}
-
-
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
-
{
-
e.DrawDefault = true; //采用系统默认方式绘制项
-
}
-
-
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
-
{
-
e.DrawDefault = true; //采用系统默认方式绘制项
-
}
如需对Item与SubItem进行重画,参见下面代码
-
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
-
{
-
e.Graphics.FillRectangle(Brushes.Red, e.Bounds); //采用特定颜色绘制标题列,这里我用的红色
-
e.DrawText(); //采用默认方式绘制标题文本
-
}
-
-
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
-
{
-
e.Graphics.FillRectangle(Brushes.Red, e.Bounds); //采用特定颜色绘制标题列,这里我用的红色
-
e.DrawText(); //采用默认方式绘制标题文本
-
}
标题列居中,将listview 的OwnerDraw 属性设置为 true后,标题列的对齐方式代码将生效;
如果listview 的OwnerDraw 属性设置为 false,标题列的对齐方式代码将无法改变(始终为左对齐)。
具体参见下面的代码:
-
this.listView1.OwnerDraw = true; //允许自绘.
-
-
ColumnHeader ch = new ColumnHeader();
-
ch.Text = "标题列1"; //设置列标题
-
ch.Width = 120; //设置列宽度
-
ch.TextAlign = HorizontalAlignment.Center; //设置列的对齐方式,this.listView1.OwnerDraw = true有效.
-
this.listView1.Columns.Add(ch); //将列头添加到ListView控件。