扩展 DataGridView 的功能(一)
来源:互联网 发布:杭州创业软件口碑 编辑:程序博客网 时间:2024/06/07 05:57
grid 控件的重要性无需多说了,但要找一个好用的却是难上加难
虽然市面上有很多成熟公司的成熟产品, 但那些东西毕竟太贵了,所以还是自己写比较实在(什么, 破解版还是算了吧)
自vs2005 以后,vs 系统自带了一个 DataGridView 控件, 这个控件的功能是很强大的,扩展性也不错, 所以我们就以它为基础吧
开始统计需要扩展的功能先:
1.显示行号
2.加入可以输入文字的 DataGridViewComboBoxCell
2.可分组折叠
3.合并单元格
4.Undo/Redo的支持
5.其他。。。。。
定义类
///扩展的DataGridView
///
publicclassDataGridViewEx:DataGridView
{
}
先来一个最简单的:显示行号
这里我们用到了一个事件 RowPostPaint, 查看MSDN后可知该事件是在“绘制 DataGridViewRow 后发生”
DataGridView 在绘制 DataGridViewRow 时没有处理行号, 那就由 DataGridViewEx 来处理吧
知道了原理,添加行号就很简单了, DrawString 就OK。
给出主要的代码实现 :
{
if(showRowHeaderNumbers)
{
stringtitle=(e.RowIndex+1).ToString();
Brushbru=Brushes.Black;
e.Graphics.DrawString(title,DefaultCellStyle.Font,
bru,e.RowBounds.Location.X+RowHeadersWidth/2-4,e.RowBounds.Location.Y+4);
}
}
完成后的效果:
二、加入可以输入文字的 DataGridViewComboBoxCell
DataGridView 的功能确实很强大,要实现在 grid 中加入 ComboBox , 只需要将grid列的类型改为 DataGridViewComboBoxColumn 即可
DataGridViewComboBoxColumn 也是从 DataGridViewColumn 中继承过来的
public class DataGridViewComboBoxColumn : DataGridViewColumn
在 Combobox 中加入选项值也是很简单的,不在赘述。
但系统自带的 DataGridViewComboBoxColumn 有个致命的缺点,就是它的 DropDownStyle 默认是 ComboBoxStyle.DropDownList,也就是
说下拉列表只能选择,不能输入文字,这样就极其不爽了,所以我们现在就要来扩展这个功能
定义新的 columns类, 当然要继承自DataGridViewComboBoxColumn
/// public class DataGridViewComboBoxColumnEx : DataGridViewComboBoxColumn 这个类只需要添加了一个属性 因为主要的功能都是在 DataGridViewEx 中实现的, 呵呵 回到 DataGridViewEx 中, 重写 OnEditingControlShowing 方法,看字面意思就知道,这个方法是在 grid 的任何“编辑控件”显示时调用 看到这个我想大家都明白了, 我们只要在 ComboBox 控件显示出来时修改它的样式即可
/// 可修改 DropDownStyle 的 DataGridViewComboBoxColumn
///
///
/// 控制组合框的外观和功能
///
[Description("控制组合框的外观和功能"), DefaultValue(ComboBoxStyle.DropDownList)]
public ComboBoxStyle DropDownStyle
{
get { return dropDownStyle; }
set { dropDownStyle = value; }
{
if (CurrentCell != null && CurrentCell.OwningColumn is DataGridViewComboBoxColumnEx)
{
DataGridViewComboBoxColumnEx col = CurrentCell.OwningColumn as DataGridViewComboBoxColumnEx;
//修改组合框的样式
if (col.DropDownStyle != ComboBoxStyle.DropDownList)
{
ComboBox combo = e.Control as ComboBox;
combo.DropDownStyle
- 扩展 DataGridView 的功能(一)
- 容器的功能扩展(一)
- C++学习笔记(一) 对C功能的扩展
- 关于C#中dataGridView常用的功能(一)
- WebBrower的应用和功能扩展(一)
- 扩展Edit Box控件的功能(一)
- 用C++扩展Python的功能(一)
- 开源DataGridView扩展(2) 自定义的Button列
- 开源DataGridView扩展(2) 自定义的Button列
- 开源DataGridView扩展(2) 自定义的Button列
- 容器的功能扩展(二)功能扩展
- DataGridView分页功能的实现
- DataGridView的双层表头功能
- DataGridView分页功能的实现
- DataGridView分页功能的实现
- DataGridView分页功能的实现
- DataGridView 编程(一)
- DataGridView样式(一)
- 要将多态基类的析构函数声明为虚函数(Effective C++ )
- Recovery Made Simple: Oracle Flashback Query
- 软件测试搜索功能测试用例
- Delphi7程序调用C#写的DLL解决办法
- 如何通过设计挖掘测试用例
- 扩展 DataGridView 的功能(一)
- 用delphi增加/获得windows用户帐号
- XJL:XML文件处理
- 软件的架构与模式之经典架构模式简介
- 用于Commons Digester的基于XML的规则集
- 测试人员如何跟踪和测试新增功能
- win7下的iis7.5 乱码 和 解析不了ASP的ADO连接数据库 的解决方法
- Apache之Digester
- (转)牛啊!JS版连连看出炉