我有一个带有7个单元格的DataGridView,如果我按下转义,我进入的每个单元格中都会删除当前行,因为我将一个名为Public Event EscapeOnFirstRowPressed
的事件删除没有问题,并将控制权交给每个初始化状态。
这个过程的一般想法是当所有细胞都满足时
由于写入程序没问题,我转而关注删除行。
我说这个动作需要从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键时执行的相同指令时,我收到同样的错误。
答案 0 :(得分:1)
在事件处理程序完成后,您可以通过调用BeginInvoke
在下一个消息循环中执行代码。