您的位置:首页 > 编程语言 > C#

C# WinForm ListView控件美化换肤

2010-01-01 15:48 766 查看
先看效果:











.NET自带的ListView控件本身就有部分BUG,例如当设置显示模式设为Tile(平铺)样式的时候,选择不同的项,就会有些选择后的背景没有完全刷新,会留下部分聚焦框。在美化的过程中,我尽量注意了这些问题,但是也没有做过多的测试,也有可能存在一些问题,首先说一下到目前已经实现了的和没有实现的功能。
实现的功能:
1、 换边框颜色。
2、 当显示模式为Details 和 List时,间隔的项显示不同的背景色。
3、 当显示模式为Details时,对列表头的美化。
4、 各种显示样式(LargeIcon、SmallIcon、List、Tile、Details)的项选择后的背景美化。
没有实现的功能:
1、 不支持显示CheckBox。这个不是不能画出来,问题是获取不到CheckBox显示的位置,因为只有点击的是系统默认的CheckBox的位置,那个项才会被选中,自己绘制的CheckBox跟默认的的位置不对的话,点击了是没用的。所以就没有支持CheckBox。
对各个项的绘制,可以通过GetBounds方法得到图标和文本的所在位置和大小,就是没有获取CheckBox的。LargeIcon、SmallIcon、List显示样式的绘制比较容易,Details样式的绘制需要注意的FullRowSelect不同设置时背景的绘制,Tile样式的文本绘制麻烦些,需要分别计算每个SubItem的文本的位置和大小。图标的绘制在项不选中的情况下很简单,选中后要实现想系统自带的那种效果需要要到API函数:ImageList_GetIcon,具体的方法,来看看全部的绘制代码吧:......

完整文章参考《C# WinForm控件美化扩展系列之ListView(4)-实现所有样式的美化》。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: