2013-10-23 52 views
17

我有用C#編寫的Winforms應用程序。當用戶更改單元格值時要捕獲DataGridView事件

在我的一個DataGridViews中,除了一個名爲ReadOnly = true的參考外,我已經設置了所有列。

我希望應用程序知道用戶何時在「參考」列中更改了任何內容,但迄今爲止嘗試過的所有事件都比用戶進行更改時發生的事件多得多。例如CurrentCellChanged在DataGridView最初呈現時觸發,每次用戶只需簡單地點擊或沿着行的選項卡等。

我只關心捕獲用戶對「參考」列中數據的更改,這是僅列ReadOnly = false;

哪一個是最好的事件來使用呢?

回答

21

CellValueChanged是你所需要的:

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e){ 
    if(dataGridView1.Columns[e.ColumnIndex].Name == "Reference"){ 
    //your code goes here 
    } 
} 

我認爲事件CellEndEdit也適用於您的想:

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e){ 
    if(dataGridView1.Columns[e.ColumnIndex].Name == "Reference"){ 
    //your code goes here 
    } 
} 
+7

我投了你的第二個解決方案: ' private void dataGridView1_CellEndEdit(object sender,DataGridViewCellEventArgs e){if(data GridView1.Columns [e.ColumnIndex] .Name ==「Reference」){ //您的代碼在這裏 } }' 因爲每次單元格中的值發生第一次觸發,即使該操作沒有被用戶觸發。 I.E.如果我有一個方法在後臺添加行,CellValueChanged會觸發。 – Luke

+2

第二種解決方案(CellEndEdit事件)也會在值未發生變化時觸發 - 例如,即使用戶按下「esc」鍵結束編輯而不更改該值。 – JPProgrammer

相關問題