无法在此事件处理程序中执行操作

Lef*_*nis 5 .net datagrid datagridview visual-studio-2010

我正在尝试从 DataGridView 中删除一行
我使用两种类型的指令
A

VouchersDGV.Rows.Clear()
Run Code Online (Sandbox Code Playgroud)


If Not DGV.Rows(RowIndex).IsNewRow Then
                DGV.Rows.RemoveAt(RowIndex)
                DGV.Refresh()
            End If
Run Code Online (Sandbox Code Playgroud)

两人都从里面

VouchersDGV_RowValidating
Run Code Online (Sandbox Code Playgroud)

事件
我还使用 RaiseEvent 从另一个事件处理程序运行它。
最后一个事件处理程序,我用它来从行内部转义,以防输入错误或......什么,并将数据网格带到它的初始位置
事件是

Private Sub Supplier_prod_EscapeOnFirstRowPressed() Handles Me.EscapeOnFirstRowPressed
Run Code Online (Sandbox Code Playgroud)

要删除我在上面的 EventHandler 中输入的行

VouchersDGV_RowValidating
Run Code Online (Sandbox Code Playgroud)

EventHandler 和我收回同样的错误

DGV.Rows.RemoveAt(0) {"Operation cannot be performed in this event handler."} 
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我不明白为什么会发生这种情况以及我如何给出解决方案
有人知道这个错误吗?

Mar*_*ell 4

在验证时,它依赖于特定的状态,当它只要求您验证某些内容时,它显然不高兴您开始更改行。我不能说我责怪它;每次事件发生后都必须重新验证场景会变得……令人困惑;更好地阻止变化。

您可以在另一个回调的计时器上将项目排队等待删除,或者可能有一种在验证期间说“不”的机制。