假设一个 win 表单具有某些输入字段并且用户输入/重新输入一些数据。
如何保留以前通过“撤消”操作输入的数据?
只是我想知道实现它的最佳方法。
最佳答案
有几个选项。重要的是你在项目的早期就开始设计它。如果在设计时没有考虑到这种功能,那么尝试将其添加到现有项目中可能会非常昂贵。
您需要利用一些基本模式:
这可能有点棘手,但一般方法是监听将数据从视觉状态“提交”到应用程序状态的事件。
Validated
事件可能是一个很好的 Hook Textbox
. Click
事件对于 Button
更有意义.当该提交发生时,您创建与该控件关联的命令,尝试执行该命令,如果该命令成功完成,则将该命令添加到您的撤消堆栈。现在,您正在准确跟踪正在发生的事情以及正在发生的数据。UnExecute()
相结合命令界面上的成员,应该是执行任务所需的最后一个核心设计。像这样的结构化方法的好处是,您现在有了一个自然扩展点,用于需要基于命令发生的其他行为。例如,交易是自然而然的选择。在我当前的项目中,我使用的是 WPF
ICommand
接口(interface)(在我的 winforms 项目中)提供有关给定命令是否 CanExecute()
的反馈在任何给定时间。这让我能够以纯命令驱动的方式适本地启用和禁用 UI 小部件。 :)不幸的是,Winforms 内置的这种结构并没有很多支持(据我所知),所以你需要从头开始构建它的大部分。没有一个部分是特别复杂的,但是您会发现自己为每个命令生成了大量的大部分样板代码。这也是一种普遍的设计技术。为了使其有效,它必须在应用程序的适当部分中始终如一地使用。这使得改造功能变得相当昂贵,尤其是在原始代码紧密耦合且没有内聚的情况下。
关于.net - 如何在.net windows应用程序中实现 'undo'操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/800940/