DataGridView列标题可编辑组件

示例下载地址:http://download.csdn.net/source/950756

本组件演示如何实现DataGridView列标题的编辑。

使用效果如下,双击列标题即可编辑,失去焦点则恢复原始状态,可响应键盘方向键操作。

 

实现原理分析如下:

1、在组件中包含一个文本框,添加到界面上时设置为隐藏。

2、双击DataGridView控件的列标题时,获取列标题的坐标信息。

3、根据获取的坐标信息改变文本框的大小和位置,显示文本框以覆盖掉列标题,并在文本框中显示列标题文本。

4、文本框失去焦点后将文本框中的文本设置为正在编辑的列标题的文本。

5、根据按键进行更灵活的操作,比如左右移动编辑和确认输入

 

实现要点:

1、在DataGridView的ColumnHeaderMouseDoubleClick事件中实现编辑操作

2、计算坐标时需要考虑滚动条,滚动条滚动时需要同步移动文本框

3、用键盘移动编辑时需要考虑隐藏列不可编辑

 

类图如下:

组件有两个属性

EnableEdit(bool):是否允许编辑列标题

TargetControl(DataGridView):要编辑的目标DataGridView控件

 

实现了ISupportInitialize接口,在接口方法EndInit中实现组件的初始化和绑定目标控件的事件处理方法。

  1.         public void EndInit()
  2.         {
  3.             if (m_TargetControl != null)
  4.             {
  5.                 this.m_TargetControl.Parent.Controls.Add(this.rtbTitle);
  6.                 this.rtbTitle.BringToFront();
  7.                 this.ReloadSortedColumnList();
  8.                 m_TargetControl.ColumnHeaderMouseDoubleClick += new DataGridViewCellMouseEventHandler(TargetControl_ColumnHeaderMouseDoubleClick);
  9.                 m_TargetControl.ColumnDisplayIndexChanged += new DataGridViewColumnEventHandler(TargetControl_ColumnDisplayIndexChanged);
  10.                 m_TargetControl.Colu
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值