我可以轻松跟踪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
吗?
答案 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