我有一個DataGridView,我需要運行CellValidating事件以確保只從ComboBox中選擇有效值。這是必需的,因爲ComboBox包含用於顯示類別的虛擬行,並且用戶可以在每個類別下列出的字段選擇。DataGridView行正在驗證中被清除
雖然我的驗證代碼工作正常,但有一個不受歡迎的副作用是所有值都從正在驗證的行中擦除。我已經剝離的事件處理程序代碼到這一點,這個問題仍然存在:
private void dgvInformation_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DataGridView dgv = this.dgvInformation;
DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
如果我刪除
DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
線則不會出現這個問題。
DGV不受約束,我認爲這是導致問題的原因。作爲一個測試,我做了一個簡單的表單並填充了DGV值,並且每次CellValidating事件觸發該行被刪除,但是當我創建一個List並將其用作DataSource時,值不會被清除。這可能是未綁定DGV的錯誤嗎?
非常感謝
需要進行驗證的原因是ComboBox顯示類別名稱,其值爲-1,並且在每個類別下列出了其數據庫ID作爲值的字段。如果值爲-1,則使用驗證事件將事件參數的取消屬性設置爲true – CrazyHorse