在工作中自己也遇到過這類問題, 最近也有很多人問我這個問題, 就此機會寫出來記錄一下.
首先,顧名思義,值改變事件我們會想到 dataGridView1_CellValueChanged 這個事件,想必看名字都知道.具體代碼如下.
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (dataGridView1.Columns[e.ColumnIndex].Name == "City") { DataGridViewComboBoxCell comboxCell =(DataGridViewComboBoxCell)dataGridView1.Rows[e.RowIndex].Cells["City"]; DataGridViewTextBoxCell textbox =(DataGridViewTextBoxCell)dataGridView1.Rows[e.RowIndex].Cells["城市"]; textbox.Value = comboxCell.Value.ToString(); dataGridView1.Invalidate(); } }
如上代碼只是個演示,至於判斷當前列內容是否為空之類的一些條件篩選自己加.
至此.運行之后我們會發現.當我們選擇 DataGridViewComboBoxCell 這一列中值的時候,並沒有立即聯動改變所需要改變列的值.而是我們去點擊那一列的時候或者點擊別的行之后才會變. 這樣是不是會有點不太好呢.所以還需要寫到一個事件.如下代碼。
我們還需要觸發dataGridView1的CurrentCellDirtyStateChanged事件,並且在事件中調用DataGridView.CommitEdit 方法。
[關於CommitEdit MSDN解釋如下:將當前單元格中的更改提交到數據緩存,但不結束編輯模式。 ]
這樣我們關心的那個事件CellValueChanged就能夠被順利觸發了。示例代碼如下。
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e) { if (dataGridView1.IsCurrentCellDirty) { dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); } }
至此。本博文的內容介紹完畢。因為平時工作忙,很少寫博文,看到網上有些問題也並不全面。所以記錄下平時工作中所遇到的問題。與大家共同進步。
看了之前寫過的博文也有不少瀏覽量,有些還是很少.也許是關鍵字的原因難以搜索到或者很少有人遇到我這樣的問題吧.
最主要還是本人的博文水平有限,並不是很了解這塊。望大家見諒。望看到的朋友們在底下給個回復。互動一下。謝謝了。