如何在DataGridView中捕获已取消的单元格编辑?

时间:2015-08-18 17:58:03

标签: .net vb.net winforms events

我可以轻松跟踪DataGridView中的单元格更改:

Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) _
        Handles DataGridView1.EditingControlShowing
    If TypeOf e.Control Is DataGridViewTextBoxEditingControl Then
        RemoveHandler e.Control.TextChanged, AddressOf ProcessCellChange
        AddHandler e.Control.TextChanged, AddressOf ProcessCellChange
    'ElseIf TypeOf e.Control Is ...etc.
    End If
End Sub

我可以在用户输入时可视化此更改。但是,当用户按下 Esc 并取消编辑时,如何捕获“撤消”内容?

示例:单元格包含Hello,我将其更改为BYE并按 Esc 。现在Hello文本又回到了单元格中。撤消文本后将触发什么事件,以便我可以使用Hello更新相关控件?

当我检查Leave的{​​{1}}个事件时,他们仍然会给我LostFocus文字,因为它们是在文本被还原之前发生的。知道如何在按 Esc 后获取BYE吗?

1 个答案:

答案 0 :(得分:0)

我现在通过禁用“取消撤消”来解决(或解决?)问题。如果用户按下 Esc ,则不会执行显着的撤消操作。它是通过在EditingControl的每个值更改时更新基础DataGridView单元来完成的,因此,即使撤消时有反转,它也没有效果:

Private Sub ProcessCellChange(sender As Object, e As EventArgs)
'...
    content = DirectCast(DataGridView1.EditingControl, Control).Text
    currentRow.Cells(ContentColumn.Index).Value = content
'...
End Sub