Undo/Redo 在 WinForms 中使用 PostSharp?

Undo/Redo in WinForms using PostSharp?

我知道一些为 WinForms 控件添加 Undo/Redo 功能的方法,但我收到了一封来自 PostSharp 的关于他们的 Aspect 的电子邮件] 提示显示了添加 Undo/Redo 功能的非常基础知识,然后我对这个功能感兴趣,因为它看起来非常简单,只需最少的代码源更改(并且似乎是一种可靠的方法,因为它是由 PostSharp团队)。

然后,我想知道 PostSharp 是否能够为 WinForm 的控件添加 undo/redo,比如说我有一个 ListBox 我想在其中添加 undo/redo 使用 PostSharp 删除项目的功能,这可能吗?

我知道很多人喜欢 PostSharp 但我需要说他们的文档非常混乱并且缺乏存在的细节,官方文档显示了一个 undo/redo 示例WPF使用XAML,其他技术就这些了,没有提到是否可以在WinForms中实现,所以不使用WPF的人怎么办?,我应该怎么做?。

PostSharp 的 Undo/Redo 文档:

http://doc.postsharp.net/undoredo?utm_source=crm&utm_medium=email&utm_content=e4&utm_campaign=ln4

Postsharp 不是必需的。基本上,您需要创建自己的 "breadcrumbs" 并根据需要来回滚动。过去,我通过为过去 X 次用户操作缓存屏幕视图模型的副本来完成此操作,然后将 UI 重新绑定到他们想要将 back/forward 滚动到的任何版本。如果您 built/organized 从一开始就考虑到这一点,这会容易得多,但我不明白为什么不能对列表框或用户控件的状态做同样的事情。如果你引入一个支持数据存储,这会变得更加复杂,我会建议事务或更改表单,以便在单击 'Submit/Commit' 类型按钮以及你自己的 "breadcrumbs" 支持 undo/redo 仅用于提交前的编辑会话。