程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#中使用單個對象的方法實現Undo/Redo(2)

C#中使用單個對象的方法實現Undo/Redo(2)

編輯:關於C語言

步驟4

然後創建一個名為UndoRedo的類,它包含兩個類型的ChangeRepresentationObject棧。一個用於撤銷 操作,一個用於重做操作。該類將實現以下接口:

interface IUndoRedo
{
void Undo(int level);
void Redo(int level);
void InsertObjectforUndoRedo(ChangeRepresentationObject dataobject);
}

步驟5

然後實現具體方法:Undo、 Redo、InsertObjectforUndoRedo。

在每個Undo操作中:

◆首先檢查Undo棧是否為空。

◆如果不是,則彈出一個ChangeRepresentationObject並將其壓入重做棧。

◆檢查動作類型。

◆然後基於動作類型,利用ChangeRepresentationObject的屬性完成撤銷操作。

在每個Redo操作中,你幾乎做與Undo同樣的事。

◆首先檢查Redo棧是否為空。

◆如果不是,彈出一個ChangeRepresentationObject,然後將其壓入撤銷棧。

◆檢查動作類型。

◆然後基於動作的類型,利用ChangeRepresentationObject屬性完成重做操作。

在InsertObjectforUndoRedo操作中,你只要把數據對象插入Undo棧並清空Redo棧中。

步驟6

然後,在完成每次操作前,調用InsertObjectforUndoRedo方法以對所有操作提供Undo/Redo支持。在 用戶界面上點擊Undo時,只需調用UndoRedo類的Undo方法,而在用戶界面上點擊Redo時,只需調用 UndoRedo類的redo方法。

示例應用程序說明

這個示范WPF繪制應用程序用來作為結合Undo/Redo操作的案例。該WPF應用程序示例支持四種操作:插 入對象、刪除對象、移動對象和調整對象的尺寸,它還有兩種類型的幾何對象:矩形和多邊形。它使用畫 布作為包含這些幾何對象的容器。

現在,在此系列文章中,我們可以看到如何讓這四個操作支持Undo/Redo。在第一部分,使用單個對象 表示變化的方法實現。在第二部分,使用命令模式實現而在第三部分,使用備忘錄模式實現。

使用單個對象表示變化的方法實現示范應用程序的Undo/Redo

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved