Winform中DataGridView对输入进行实时提交的办法

Winform中DataGridView对输入进行实时提交的办法

Winform中DataGridView对输入进行实时提交的办法:
在CurrentCellDirtyStateChanged事件中提交表格内容.
事件中代码如下:

if (this.dataGridView1.IsCurrentCellDirty)
           {
               this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
           }
在DataGridView中输入是就会实时触发CellValueChanged事件,而不是按回车和焦点离开时触发.
为什么DataGridView中输入时不会实时提交? 基本原理描述如下
先简单描述下我对DataGridView的数据访问的机制以及事件触发的先后顺序的理解。

1、DataGridView后台应该对应一个二维数组;

2、当选中某个单元格后,根据ColumnType属性指定的DataGridViewColumn类型创建EditingControl,将当前单元格的值赋给EditingControl,同时触发CellBeginEdit事件;

3、当EditingControl.Text发生变化后,触发CurrentCellDirtyStateChanged事件,

4、如果在该事件中添加DataGridView.Commit()方法,将变化的内容提交到DataGridView后台对应的二维数组中,同时会触发CellValueChanged事件;

5、那么我们就可以在该事件中,实时对编辑的单元格内容进行校验。

在DataGridView添加如下的事件( CurrentCellDirtyStateChanged)

private void dataGridView2_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {

            //添加下面的代码后,你用鼠标点击CheckBox列的check变化后触发CellValueChanged事件
            if (dataGridView2.CurrentCell.ColumnIndex == 0)
            {
                dataGridView2.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
        }

注意还有一个问题:

添加DataGridViewCheckBoxColumn列后,网上有说点击check后状态不改变的问题。

我的经验:

1、DataGridView必须选择Eable Editing,否则你点击check状态不变

2、DataGridViewCheckBoxColumn的ReadOnly设置为false


转载于:https://my.oschina.net/u/2494395/blog/608290

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值