C#,WinForms移動DataGridView1.CurrentCell和BeginEdit不起作用。如果我使用Tab#
也許這是一個愚蠢和微不足道的問題,但我不能出去! 我有一個DataGridView1
4列。我檢查列1中每行的值是否與列2中前一行的值相同。如果是,則顯示一個MessageBox
告訴我...並且我想將焦點置於其中的單元格有剛剛輸入的雙重值。因此我寫了這段代碼:
private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs cella)
{
if (cella.RowIndex > 0 && cella.ColumnIndex == 1)
{
var PrevCell = DataGridView1.Rows[cella.RowIndex - 1].Cells[2].Value.ToString();
if (DataGridView1.Rows[cella.RowIndex].Cells[cella.ColumnIndex].Value.ToString() == PrevCell)
{
MessageBox.Show("Amount already exists. Change the current value or the previous occurrence", "Double value, already inserted", MessageBoxButtons.OK, MessageBoxIcon.Warning);
DataGridView1.CurrentCell = DataGridView1.Rows[cella.RowIndex].Cells[cella.ColumnIndex];
DataGridView1.BeginEdit(true);
//only a test:
//return;
}
}
}
}
而CurrentCell
工作正常。問題是,當我按下Tab
鍵移動到下一個單元格(或者我用鼠標點擊下一個單元格),因此即使BeginEdit
將我置於右側,也會發生CellEndEdit
事件單元格讓我編輯該值,只要我再次按下Tab鍵,它將在下一個單元格中移動已更改的值。看起來在顯示MessageBox之前按下的Tab仍保留在內存中。
當CurrentCell和BeginEdit導致我在正確的細胞改變雙重價值
在活動結束
如何處理這個問題的任何想法?
什麼是消息框的翻譯? –
我只在代碼中的MessageBox中翻譯了它:'Quantitàgiàpresente。 Modifica l'attuale valore o l'occorrenza precedente' ='金額已經存在。當Valore doppio,giàinserito' ='Double value,already inserted'時,改變當前值或前一個事件。 – Wiccio