0
我有一個有點問題與DataGridView中的CellEndEdit
事件。雖然我理解這個問題實際上的概念,但任何繞過它的企圖似乎都失敗了。datagridview的CellEndEdit閃光兩次
基本上,我有一個datagridview,在CellEndEdit
事件中,我對數據庫進行了檢查以確保該條目不是重複的。如果是這樣,我用一個消息框提示用戶告訴他們不能輸入重複項,然後以編程方式將值更改回其原始狀態/值,並將單元格返回到「編輯」狀態。
我的理解是,我是編程改變值的事實就是爲什麼事件觸發兩次。爲了規避,我在首次進入事件時設置了一個標誌,然後提示+設置+重新編輯,然後將該標誌設置爲false。這不起作用......任何人都可以告訴我爲什麼或者我該如何做到這一點?
這裏的事件代碼:
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if(e.ColumnIndex == this.dataGridView1.Columns["Name"].ColumnIndex)
{
if(!this.CellBeingEdited)
{
string NewName = this.dataGridView1.Rows[e.RowIndex].Cells["Name"].Value.ToString();
//-== DATABASE CODE REMOVED ==-
bool IsDuplicate = ...;
if(IsDuplicate)
{
MessageBox.Show("Cannot have duplicate item names at this level!");
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[e.RowIndex].Cells["Name"];
this.CellBeingEdited = true;
this.dataGridView1.CurrentCell.Value = this.LastEditedRowName;
this.CellBeingEdited = false;
this.dataGridView1.BeginEdit(false);
return;
}
}
}
}
同樣的問題...現在它也激發每一個數據綁定,形式加載,或電網刷新時間...... – MaxOvrdrv
你說的細胞驗證閃光兩次每次驗證? –
不......我是說,它激發所有的時間...加載窗體時,當窗體顯示,當綁定完成後,當電網UI刷新,當值發生變化,等等。如果我使用這個事件,我將不得不捕捉並標記每個事件觸發和逃脫的實例,我真的只想在單元格內容完成編輯時檢查並執行邏輯。 – MaxOvrdrv