C#中使用单个对象的方法实现Undo/Redo
2009-03-19 08:21:07 来源:WEB开发网◆然后基于动作的类型,利用ChangeRepresentationObject属性完成重做操作。
在InsertObjectforUndoRedo操作中,你只要把数据对象插入Undo栈并清空Redo栈中。
步骤6
然后,在完成每次操作前,调用InsertObjectforUndoRedo方法以对所有操作提供Undo/Redo支持。在用户界面上点击Undo时,只需调用UndoRedo类的Undo方法,而在用户界面上点击Redo时,只需调用UndoRedo类的redo方法。
示例应用程序说明
这个示范WPF绘制应用程序用来作为结合Undo/Redo操作的案例。该WPF应用程序示例支持四种操作:插入对象、删除对象、移动对象和调整对象的尺寸,它还有两种类型的几何对象:矩形和多边形。它使用画布作为包含这些几何对象的容器。
现在,在此系列文章中,我们可以看到如何让这四个操作支持Undo/Redo。在第一部分,使用单个对象表示变化的方法实现。在第二部分,使用命令模式实现而在第三部分,使用备忘录模式实现。
使用单个对象表示变化的方法实现示范应用程序的Undo/Redo
利用单个对象表示变化的方法对示范应用程序Undo/Redo的实现将在以下步骤中讨论
步骤1
我们将识别出那些需要支持Undo/Redo的操作。这里有四个操作支持Undo/Redo。它们是::插入对象、删除对象、移动对象和调整对象的尺寸。我们将对矩形和椭圆支持Undo/Redo,这里的容器是画布。
步骤2
现在我们将识别出那些进一步处理Undo/Redo所需的保存的参数。几何对象移动时其边距改变,因此要支持对象移动的Undo/Redo,要保存边距。当对象改变尺寸时,它的高度、宽度和边距改变。因此为支持对象尺寸调整的Undo/Redo,我们需要保存高度、宽度和边距。为了支持插入和删除的Undo/Redo操作,我们需要保存几何对象的引用。
更多精彩
赞助商链接