多文档撤销问题!!分不够可在加!!!

dlqycyz 2003-08-19 03:48:40
我正在做一个多文档的小软件,目前有一个问题,我希望保存每一步的操作,当我进行撤销时,就能一步一步返回,我现在了对单文档的撤销。我希望大家给与帮助,最好能提供源代码?问题解决,就给分,分不够可在加。
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chestnuts 2003-08-20
  • 打赏
  • 举报
回复
考虑简单方便快捷的方法就是~~~~
当当当~~~
你把所有的多文档页面建在同一页,然后挨个隐藏显示~~
复杂一点的就是把你的页面对象serialize串行化后存在Buffer(很久没研究CS了:(,可能不是Buffer)里,到时候挨个反串行化就Ok了!!
不知道你听明白没有???

厚厚~~~
dlqycyz 2003-08-20
  • 打赏
  • 举报
回复
还是不是太懂,能否在详细些。谢谢先
qqq123 2003-08-19
  • 打赏
  • 举报
回复
public class UndoAgent
{
public delegate void ActUndoEventHandler(object sender,ActUndoEventArgs e);

public class ActUndoEventArgs:EventArgs
{
public ActUndoEventArgs(object document,object action)
{
this.Document=document;
this.Action=action;
}
public object Document=0;
public object Action=0;
}

public event ActUndoEventHandler ActUndo=null;

protected virtual void OnActUndo(ActUndoEventArgs e)
{
if(this.ActUndo!=null)
this.ActUndo(this,e);
}
private Hashtable _buff=new Hashtable();

private ArrayList GetActions(object document)
{
if(!this._buff.ContainsKey(document))
{
this._buff.Add(document,new ArrayList());
}
return this._buff[document] as ArrayList;

}
public virtual void Save(object document)
{
if(this._buff.ContainsKey(document))
{
this._buff.Remove(document);
}
}
public virtual void Load(object document)
{
//.... ....
}
public int Do(object document,object action)
{
return this.GetActions(document).Add(action);
}
public void Undo(object document,int step)
{
this.Load(document);
ArrayList actions=this.GetActions(document);
int i=0;
for(i=0;i<step && i<actions.Count;i++)
{
this.OnActUndo(new ActUndoEventArgs(document,actions[i]));
}
for(int k=i;k<actions.Count;k++)
{
actions.RemoveAt(i);
}
}
}
dlqycyz 2003-08-19
  • 打赏
  • 举报
回复
各位,小弟才疏学浅,还希望各位多多帮忙,能否给出例子。先谢谢了
godliu521 2003-08-19
  • 打赏
  • 举报
回复
不知道
雪狼1234567 2003-08-19
  • 打赏
  • 举报
回复
写一个类,在每个文档里new 一个,然后名字用子文档名字,
qiujinwen 2003-08-19
  • 打赏
  • 举报
回复
搞个结构体或类。里面两个变量,一个记录文档的编号,记录是改动了哪个文档,另外一个记录你改动的内容

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧