• 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控件。
    对于不可控的事情,保持乐观; 对于可控的事情,保持谨慎
  • 相关阅读:
    QML中的states用法
    mako的namespace(四)
    Dynamics CRM2013 按钮自定义开发工具 Ribbon Workbench 介绍
    CRM 导入导出附件上传大小限制控制
    插件(plugin)调试技巧及注意事项
    Dynamics CRM2013 自定义开发工具 Dynamics XRM Tools 介绍
    传递正能量,拒绝负能量!加油
    让人无语的编程环境
    转NET(C#):线程本地存储(ThreadLocal Storage)之ThreadStatic, LocalDataStoreSlot和ThreadLocal<T>
    转javaThreadLocal
  • 原文地址:https://www.cnblogs.com/baylor2019/p/11910187.html
Copyright © 2020-2023  润新知