开源DataGridView扩展(1) 扩展支持全选的CheckBox列。
2012-04-27 22:35
295 查看
长江后浪推前浪,虽入行不是很久,但觉得自己已经老了;俱往矣,数风流人物还看今朝。已经好久没有写文章了,今天我又回来了。
一、DataGridViewEx是什么?
什么是DataGridViewEx? 如果你用过DotNetBar或者DevExpress,你就会用到比较好看漂亮功能强大的表格控件;美观我们这里不讨论,只针对功能而言;我们用过ListView和DataGridView,你有没有为了CheckBox列没有全选按钮而在你项目中就需要这样的一个按钮,你或许遇到过你想要一个漂亮一点的按钮而不是大小都随着单元格在变的按钮。那么就像DotNetBar的源码中的那样,这里小子不才,分享一点可以通过DataGridView的一些类来进行扩展的,这里命名为DataGridViewEx。
二、DataGridViewEx怎么做?
我曾经很想要一个Winform的表格,ListView功能太少,DataGridView界面太丑而且太复杂,于是就诞生了我前面WInform自定义表格那篇文章,现在回忆一下,那个表格可是从底层开始设计,设计了单元格,设计了列,设计了行的表格,反正从中也学习了表格的不少知识。
而现在想想呢,当时挺傻的,现在能使用DataGridView来扩展,那么想要一些功能既方便而且又不失去另外一些功能,并且保证了一些数据加载的可靠性等。那么简单介绍一些如何来扩展DataGridView吧。
对于DotNet库中很多方法都被写成了Sealed的,就是不可继承的;或许是微软自己都觉得他们自带的那些控件既简陋又丑陋吧,所以在控件的继承重绘上还是留给了足够的空间。对于DataGridView需要了解一下表格的组织:
列中包含:表头单元格和单元格(这个通过模板体现)。 由以上的信息可知,想要扩展DataGridView的列就必须对DataGridViewColumn、DataGridViewColumnHeaderCell、DataGridViewCell进行扩展,然后组合就可以得到一个新的列了。并且在DataGridView的设计器中列类型选择是通过反射来实现的,所以只要新增加一种,就可以自动识别。
三、支持全选的的CheckBox列的简单介绍。
2. 使用什么绘制CheckBox?
一方面, 在System.Windows.Forms下面有CheckBoxRender、ButtonRender、RadioButtonRender等Render,这些类库可以提供绘制方法。也可以通过ControlPaint类来进行绘制。
3. 对CheckBox的一些状态效果简单介绍。
在Render中支持绘制不同类型的CheckBox,那么现在要做的就是知道当前CheckBox属于什么状态,这个要通过MouseMove、MouseLeave、MouseDown等方法中判断鼠标位置是否在当前的checkbox上,然后设置一个当前checkbox的check状态。另外,只要在这些方法中设置一个全局CheckBoxState就行了,具体的绘制都交由Paint方法就行了。这里说明,一般这种自绘的东东中,是需要override一些Paint或者OnPaint方法的,然后在这个方法里面进行绘制。
四、后续简介
相关文章推荐
- 开源DataGridView扩展(1) 扩展支持全选的CheckBox列。
- 开源DataGridView扩展(6) 简单实现checkbox行选级联。
- 原创 c# 封装的带CheckBox的DataGridViewColumnHeaderCell 源码部分 实现DataGridView列头带CheckBox控件实现全选功能,支持列头带标题
- EXT2.0 checkbox树的扩展(支持单选,级联多选,只选叶子等)
- c#——Winform DatagridView 扩展支持combobox列自定义DropDownStyle
- 一个通用的DataGridView导出Excel扩展方法(支持列数据格式化)
- ASP.NET2.0下利用javascript实现TreeView中的checkbox全选 (支持IE/firefox)
- .NET漫游指南-004-在dataGrid中添加CheckBox支持单选,多选,全选功能
- 支持三态CheckBox的 MFC TreeCtrl 控件扩展
- 安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)
- Robbe-1.6.0 发布 - PHP开源中文分词扩展, GBK支持
- checkbox 全选/反选功能的 jquery插件(支持多页保持选择)
- 当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用
- easyui扩展datagrid-groupview实现支持全选及点击标题收缩
- 一个通用的DataGridView导出Excel扩展方法(支持列数据格式化)
- 安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)
- 开源DataGridView扩展(5) 简单实现统计行,有更好的方法吗?
- DataGridView里checkbox全选,反选的完美实现
- 一个通用的DataGridView导出Excel扩展方法(支持列数据格式化)
- 扩展dtree支持checkbox