如何实现树视图中映射的文件的撤消/重做

时间:2008-12-15 11:29:28

标签: c# undo-redo

任何人都可以知道我应该如何实现在C#中树视图中映射的文件(dirs,subdirs)的剪切/复制/粘贴的撤消/重做?

有一些代码示例会很棒。

3 个答案:

答案 0 :(得分:7)

考虑实施Command pattern(GoF):

  • 将您的动作逻辑放入实现通用ICommand {Do(); Undo();}接口。
  • 在每个用户操作上,您创建所请求命令的对象,并使用新旧文件名等上下文参数对其进行初始化。
  • 调用Do(),将对象放入已完成命令的堆栈中。
  • 每个命令都提供了上下文,因此通过调用Undo()可以反转更改。
  • 考虑将文件移动到临时文件夹而不是删除。

答案 1 :(得分:5)

撤消/重做通常使用所谓的“命令模式”来实现。使用Google搜索或阅读以下文章:

  

http://blogs.vbcity.com/jspano/articles/198.aspx

答案 2 :(得分:1)

对于快速线性撤消/重做,您可以使用文件zip作为纪念品使用Memento pattern