Удалить строку из DataGridView - PullRequest
1 голос
/ 17 февраля 2011

У меня есть 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.

1 Ответ

1 голос
/ 17 февраля 2011

Вы можете выполнить код в следующем цикле сообщений после завершения обработчика события, вызвав BeginInvoke.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...