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

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

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

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

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

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

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

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

五、那么咱们就能够在该事件中,实时对编辑的单元格内容进行校验。form

在DataGridView添加以下的事件( CurrentCellDirtyStateChanged)后台

private void dataGridView2_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {原理

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

注意还有一个问题:

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

个人经验:

一、DataGridView必须选择Eable Editing,不然你点击check状态不变

二、DataGridViewCheckBoxColumn的ReadOnly设置为false

相关文章
相关标签/搜索