/// <summary> /// 添加可撤消的动作 /// </summary> /// <param name="p_action"></param> public void RecordAction(HistoryCmdAction p_action) { if (_undoStack.Count > _depth) { _undoStack.Pop(); } _undoStack.Push(p_action); _redoStack.Clear(); if (_undoStack.Count == 1 && DirtyChanged != null) { DirtyChanged(this, true); } }
/// <summary> /// 执行重做操作 /// </summary> public void Redo() { if (CanRedo) { HistoryCmdAction action = _redoStack.Pop(); action.Redo(); if (_undoStack.Count < _depth) { _undoStack.Push(action); } if (_undoStack.Count == 1 && DirtyChanged != null) { DirtyChanged(this, true); } } else { Kit.Msg("无操作可重做!"); } }
/// <summary> /// 执行撤消操作 /// </summary> public void Undo() { if (CanUndo) { HistoryCmdAction action = _undoStack.Pop(); action.Undo(); if (_redoStack.Count < _depth) { _redoStack.Push(action); } if (_undoStack.Count == 0 && DirtyChanged != null) { DirtyChanged(this, false); } } else { Kit.Msg("没有可撤消的操作!"); } }