当前位置:网站首页 > 编程语言 > 正文

重绘图标(重绘图标怎么关闭)



最近在winform应用中需要用到可分组的数据列表功能,DataGridView默认没有提供分组的功能,而OutlookGrid(http://www.codeproject.com/KB/grid/OutlookGrid.aspx)用起来又是相当的麻烦,最后发现了ObjectListView(objectlistview.sourceforge.net),功能相当的强大,强大到我不需要那么多的功能,额~~所以决定参照它的实现,对ListView做一个简单的扩展(注:本文仅针对ListView的View属性为Details)。

首先为ListView添加好列:

这是ListView自带的功能,用起来也很简单,只需要把ShowGroups设置为true(默认为true),再为ListView添加ListViewGroup,并为ListViewItem设置Group即可,代码如下:

接下来的重绘方法,就需要通过继承ListView并重写OnDrawSubItem(DrawListViewSubItemEventArgs e)方法来实现,在重写此方法之前,必须设置ListView的OwnerDraw属性为true,用于启用重绘。

ListView默认可以设置ImageIndex来显示图标,但是只能设置在每个ListViewItem上,即每一行数据只能有一个图标,若要每个ListViewSubItem都能设置图标,则需要通过重写OnDrawSubItem(DrawListViewSubItemEventArgs e)方法来实现,关键代码为:

对这种方法简单的改造,可以为每一列设置单独的图标。

ListView在设置了分组的情况下,GridLines属性就无效了,所以如果需要显示网格线,也需要通过重写OnDrawSubItem(DrawListViewSubItemEventArgs e)方法来实现,关键代码为:

以上代码画了灰色的网格线,也可以简单改造以实现自定义的网络线颜色。

在重写OnDrawSubItem(DrawListViewSubItemEventArgs e)方法之后,选中ListView的行,默认的背景色不会出现,所以还得把选中状态的背景色显示出来,关键代码为:

以上代码为选中的列绘制了蓝色的背景,同样也可以扩展以上代码来实现自定义背景色。

在重写OnDrawSubItem(DrawListViewSubItemEventArgs e)之后,原来的文本内容同样也会像背景一样丢失了,所以需要把原来的文本重新绘制出来,关键代码如下:

1、自动调整列大小:调用AutoResizeColumns方法,listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)

相关的演示代码:

DEMO下载

到此这篇重绘图标(重绘图标怎么关闭)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 颜色代码查询在线(颜色代码查询在线下载)2025-02-28 10:27:06
  • 打印控件(lodop打印控件)2025-02-28 10:27:06
  • 单播是什么意思主播(直播单播是什么意思)2025-02-28 10:27:06
  • 安装虚拟机的系统可以安装给电脑用吗(虚拟机能装安卓系统吗)2025-02-28 10:27:06
  • Tp9930(tp9930芯片规格书)2025-02-28 10:27:06
  • 海尔电视怎么查设置(海尔电视机如何找到设置)2025-02-28 10:27:06
  • junit5和junit4的区别(junit4的优点)2025-02-28 10:27:06
  • ew是什么焊接(ew是什么焊接方法)2025-02-28 10:27:06
  • 如何安装统信系统(统信系统u盘安装)2025-02-28 10:27:06
  • 虚拟u盘下载(u盘怎么安虚拟机)2025-02-28 10:27:06
  • 全屏图片