Vb.net 如何在编辑前保存DataGridView单元格的值以进行撤消?

Vb.net 如何在编辑前保存DataGridView单元格的值以进行撤消?,vb.net,datagridview,undo,Vb.net,Datagridview,Undo,我正在使用命令设计模式为DataGridView添加撤消功能 要创建EditCommand,我必须知道单元格的前一个值是多少,以便在用户点击undo时重新输入它 我正在使用CellBeginEdit和CellEndEdit事件来完成它 使用CellBeginEdit,我将单元格的值保存在一个私有变量中,在CellEndEdit函数中,我使用保存的值创建EditCommand 它工作得很好,但我想知道是否有更明智的方法来做这件事。可能是将上一个单元格值和新单元格值结合在一起的事件 如果我真的可以阻

我正在使用命令设计模式为DataGridView添加撤消功能

要创建EditCommand,我必须知道单元格的前一个值是多少,以便在用户点击undo时重新输入它

我正在使用CellBeginEdit和CellEndEdit事件来完成它

使用CellBeginEdit,我将单元格的值保存在一个私有变量中,在CellEndEdit函数中,我使用保存的值创建EditCommand

它工作得很好,但我想知道是否有更明智的方法来做这件事。可能是将上一个单元格值和新单元格值结合在一起的事件


如果我真的可以阻止DataGridView自我更新并让EditCommand来做,那就有好处了。

我最近在一个大型WPF应用程序中实现了Undo/Redo,并且能够将Undo/Redo逻辑提取到一个独立的库中。这在CodePlex上提供

该库有助于保存一组历史记录,如果用户选择撤消/重做,可以重新应用这些历史记录。这可以替换您的私有变量,并允许撤消历史记录中有多个项目


您可以在

上找到文档和下载。我感谢您的帮助,但我希望继续使用命令设计。另外,我已经有了一个用于撤消/重做的堆栈。问题是要使用哪些事件。您查看过BindingGroup吗?这就是DataGrid用来管理和应用值的内容。如果希望在行级别而不是单元格级别管理事务,或者希望更改与提交绑定相关的行为,那么BindingGroup可能是一个不错的选择。