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

发布于 2024-07-10 03:10:21 字数 82 浏览 11 评论 0原文

谁能告诉我应该如何实现对 C# 中树视图中映射的文件(目录、子目录)的剪切/复制/粘贴的撤消/重做?

如果有一些代码示例就太好了。

Can anyone give an idea of how should I implement undo/redo of cutting/copying/pasting of files (dirs, subdirs) mapped in a treeview in C#?

It would be great to have some code samples.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

别想她 2024-07-17 03:10:21

考虑实现命令模式 (GoF):

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

Consider implementing Command pattern (GoF):

  • Put your actions logic into classes which implement common ICommand {Do(); Undo();} interface.
  • On each user action you create object of command requested and initialize it with context parameters like new and old filename.
  • Call Do(), put object into stack of completed commands.
  • Each command is supplied with context, so by calling Undo() it can reverse changes.
  • Consider moving files into temporary folder instead of removals.
也只是曾经 2024-07-17 03:10:21

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

http://blogs.vbcity.com/jspano/articles/198.aspx< /a>


Undo / redo is typically implemented using the so-called "command pattern". Search with Google or read the following article:

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

鹿港小镇 2024-07-17 03:10:21

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

For a quick linear undo/redo, you can use Memento pattern using zip of file as memento.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文