winform ListView控件 绘制item和subitems颜色

设置ListView控件颜色

整理如下:

将listview 的OwnerDraw 属性设置为 true 并且将 View 属性设置为 View. Details 时,将触发

ListViewDrawColumnHeader事件(包括ListView DrawItem事件、ListView DrawSubItem事件)自己画背景色,下面代码可以分别对3个列头(ColumnHeader)进行重画,Item与SubItem未进行重画.

  1.  
    private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
  2.  
    {
  3.  
    if (e.ColumnIndex == 0)
  4.  
    {
  5.  
    e.Graphics.FillRectangle(Brushes.DarkGray, e.Bounds); //采用特定颜色绘制标题列,这里我用的灰色
  6.  
    e.DrawText(); //采用默认方式绘制标题文本
  7.  
    }
  8.  
     
  9.  
    else if (e.ColumnIndex == 1)
  10.  
    {
  11.  
    e.Graphics.FillRectangle(Brushes.DarkGray, e.Bounds); //采用特定颜色绘制标题列,这里我用的灰色
  12.  
    e.DrawText(); //采用默认方式绘制标题文本
  13.  
    }
  14.  
     
  15.  
    else if (e.ColumnIndex == 2)
  16.  
    {
  17.  
    e.Graphics.FillRectangle(Brushes.DarkGray, e.Bounds); //采用特定颜色绘制标题列,这里我用的灰色
  18.  
    e.DrawText(); //采用默认方式绘制标题文本
  19.  
    }
  20.  
    }
  21.  
     
  22.  
    private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
  23.  
    {
  24.  
    e.DrawDefault = true; //采用系统默认方式绘制项
  25.  
    }
  26.  
     
  27.  
    private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
  28.  
    {
  29.  
    e.DrawDefault = true; //采用系统默认方式绘制项
  30.  
    }

如需对Item与SubItem进行重画,参见下面代码

  1.  
    private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
  2.  
    {
  3.  
    e.Graphics.FillRectangle(Brushes.Red, e.Bounds); //采用特定颜色绘制标题列,这里我用的红色
  4.  
    e.DrawText(); //采用默认方式绘制标题文本
  5.  
    }
  6.  
     
  7.  
    private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
  8.  
    {
  9.  
    e.Graphics.FillRectangle(Brushes.Red, e.Bounds); //采用特定颜色绘制标题列,这里我用的红色
  10.  
    e.DrawText(); //采用默认方式绘制标题文本
  11.  
    }

标题列居中,将listview 的OwnerDraw 属性设置为 true后,标题列的对齐方式代码将生效;

如果listview 的OwnerDraw 属性设置为 false,标题列的对齐方式代码将无法改变(始终为左对齐)。

具体参见下面的代码:

  1.  
    this.listView1.OwnerDraw = true; //允许自绘.
  2.  
                
  3.  
    ColumnHeader ch = new ColumnHeader();
  4.  
    ch.Text = "标题列1";   //设置列标题
  5.  
    ch.Width = 120;     //设置列宽度
  6.  
    ch.TextAlign = HorizontalAlignment.Center; //设置列的对齐方式,this.listView1.OwnerDraw = true有效.
  7.  
    this.listView1.Columns.Add(ch);     //将列头添加到ListView控件。

猜你喜欢

转载自www.cnblogs.com/baylor2019/p/11910187.html
今日推荐