2012-06-11 23 views
3

我有一個DataGridView文本列和複選框列。當用戶點擊複選框時,我想提示用戶。我用下面的代碼得到這個工作:CurrentCellDirtyStateChanged提交太快

private void grid_CurrentCellDirtyStateChanged(object sender, EventArgs e) 
{ 
    var grid = sender as DataGridView; 
    if (grid.IsCurrentCellDirty) 
    grid.CommitEdit(DataGridViewDataErrorContexts.Commit); 
} 

然而,當我嘗試在我鍵入當我完成打字,而不是在文本列它一直致力於型。這會使文本單元格自身保持高亮顯示,並只允許我輸入單個字符。如何修改此事件以僅在複選框值更改時處理?

回答

2

你需要做的只是注意複選框,而不是文字。我發現的類似問題的解決方案是在CellEnter上放置一個記錄正在編輯的字段的事件。骯髒的處理事件然後檢查這個決定做什麼。

爲什麼座標不能用在我無法想象的骯髒檢查中。

1

我剛剛有同樣的問題。如果你想關注特定列(CheckBox Column),這將適用於你。

private void grid_CurrentCellDirtyStateChanged(object sender, EventArgs e) 
{ 
    var grid = sender as DataGridView; 

    if (grid.IsCurrentCellDirty && grid.CurrentCell.ColumnIndex == 1) 
    grid.CommitEdit(DataGridViewDataErrorContexts.Commit); 
}