使用PostSharp在WinForms中撤消/重做?

时间:2015-04-10 18:29:55

标签: c# .net vb.net winforms postsharp

我知道为WinForms控件添加撤消/重做功能的一些方法,但我收到了来自 PostSharp 的关于 Aspect 提示的电子邮件,其中显示了添加撤消的基本知识/重做功能,然后我对这个功能感兴趣,因为在最小的代码源更改时看起来非常简单(并且由于 PostSharp 团队提供了一个强大的方法)。

然后,我想知道 PostSharp 是否能够为WinForm的控件添加撤消/重做,让我们说例如我有一个 ListBox 我会在哪里想使用 PostSharp 为项目移除添加撤消/重做功能,这是可能的,怎么样?。

我知道很多人喜欢 PostSharp ,但我需要说他们的文档非常混乱且缺乏存在性细节,官方文档显示了使用XAML的WPF的撤消/重做示例,这就是全部没有关于其他技术的信息,没有提到它是否可以在WinForms中实现,所以那些不使用WPF的人会怎么样?我应该怎么做?。

PostSharp 的撤消/重做文档:

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

1 个答案:

答案 0 :(得分:2)

不需要Postsharp。基本上,您需要创建自己的“面包屑”并根据需要来回滚动。我过去通过缓存屏幕的viewmodel副本来完成过去的X个用户操作,然后将UI重新绑定到他们想要回滚/转发到的任何版本。如果您从一开始就考虑到这一点构建/组织应用程序,这会容易得多,但我不明白为什么无法对列表框或用户控件的状态进行同样的操作。如果你引入了一个支持数据存储,这会变得更加复杂,我会建议事务或更改表单,以便在点击“提交/提交”类型按钮之前不会将任何内容提交到数据存储,以及您自己的“面包屑” “在提交之前仅为编辑会话支持撤消/重做。