从DataGridView中删除行

时间:2011-02-17 09:18:40

标签: .net vb.net datagridview

我有一个带有7个单元格的DataGridView,如果我按下转义,我进入的每个单元格中都会删除当前行,因为我将一个名为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 个答案:

答案 0 :(得分:1)

在事件处理程序完成后,您可以通过调用BeginInvoke在下一个消息循环中执行代码。