2011-10-18 27 views
1

我有一個複選框在它的datagridview。重點是當用戶點擊複選框時,我立即想要執行一個操作。我有的問題是,如果我處理單元格單擊方法,這不起作用,如果用戶使用鍵盤。我可以綁定到currentcelldirtystatechanged事件,但這只是在單元格第一次更改但不是隨後時間時引發的。基本上我想立即採取行動,而不是強迫用戶改變當前焦點的單元格。你如何得到這樣一個事實:datagridview的單元格已被修改而單元格失去焦點?

+0

您是否還不能使用按鍵事件來檢查用戶何時使用鍵盤? – mservidio

+0

嗯有趣我沒有想到這個..它可能工作,雖然它似乎有很多的工作*我認爲應該是簡單的... –

回答

2

使用CurrentCellDirtychanged事件和IsCurrentCellDirty屬性。

// This event handler manually raises the CellValueChanged event 
// by calling the CommitEdit method. 
void dataGridView1_CurrentCellDirtyStateChanged(object sender, 
    EventArgs e) 
{ 
    if (dataGridView1.IsCurrentCellDirty) 
    { 
     dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); 
    } 
} 
+0

非常感謝你,這完美的作品。 –

0

有一個「CellEnter」事件會在細胞獲得焦點時引發,但可能會發生。用戶可能還沒有改變任何東西,但你描述的行爲(點擊單元格或標籤/箭頭進入)並不需要它們。

相關問題