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

相關文章
相關標籤/搜索