У меня есть DataGridView с 7 ячейками, в каждой ячейке, в которой я нахожусь, если я нажимаю escape, текущая строка удаляется, а событие, которое я сделал, с именем Public Event EscapeOnFirstRowPressed
без проблем, и приносит мне управление каждым начальным состоянием.
Общая идея этого процесса состоит в том, что, когда все клетки выполнены, тогда
- Запишите данные в таблицу SQL и
- Удалить текущую строку, чтобы пользователь был готов импортировать новые данные.
Так как процедура записи в порядке, я перехожу на удаление строки.
Я говорю, что это действие должно вызывать его либо из RowValidated
sub, либо из CellEnter
(что происходит, когда я покидаю текущую строку и перехожу к следующей строке). Но в любом месте, если я поставлю команду
If Not DGV.CurrentCell.EditedFormattedValue = "" Then
If Not DGV.Rows(RowIndex).IsNewRow Then
DGV.Rows.RemoveAt(RowIndex)
DGV.Refresh()
End If
ElseIf DGV.CurrentCell.EditedFormattedValue = Nothing Then
If Not DGV.Rows(RowIndex).IsNewRow Then
DGV.Rows.RemoveAt(RowIndex)
DGV.Refresh()
End If
End If
Я получаю следующую ошибку
DGV.Rows.RemoveAt(0) {"Operation cannot be performed in this event handler."}
Я попробовал другой процесс для этого действия. Я пытаюсь смоделировать действие KeyPress, выдав следующую команду
Dim myKeyData As System.Windows.Forms.Keys
Dim myMsg As System.Windows.Forms.Message
myKeyData = Keys.Escape
ProcessCmdKey(myMsg, myKeyData)
Но я получаю ту же ошибку, когда указатель начинает выполнять ту же инструкцию, которая выполнялась, когда я нажимал клавишу Esc.