阿扁向各位大侠请教有关 Undo-Redo 功能的实现方法。

AhBian 2004-06-17 12:00:23
阿扁正在做一个 WYSWYG 的设计器,基本上是模仿了 VS.NET 的界面设计器风格。

基本部分我都已基本实现了,可像 VS.NET 一样强大的 Undo-Redo 功能,我还正摸不着头脑。

用户的每次操作都可能引起某些数据的更改,如何“高效”地记忆数据更改历史和相应的状态,我苦思冥想也想不出一个好的方法来解决。

恳请各位大侠不吝赐教。
...全文
777 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
AhBian 2004-06-21
  • 打赏
  • 举报
回复
另外特别致谢:
chestnuts(c# Sharp)

尽管我个人认为你的观点是偏激的,且略带有一些挑战性。
但你对本帖态度是认真的,而我个人认为这一点也是很重要的。

大家都素昧谋面,但宽容与和气是必须的,尽管争论可以面红耳赤。
AhBian 2004-06-21
  • 打赏
  • 举报
回复
看来这个帖挂在上面也没什么意思了。
现在 CSDN 的人气(以及人气的质量)真的不能跟一年前比了。

尽管我还没开始动手写这部分的代码,但基本方略也是有了。
基本上还是参照有些朋友建议的 SharpDevelop 的源代码。

不过,这个源代码的确很难读,关键是这个源代码不能用 VS.NET 来读(要想迁移到 VS.NET也很难)。我花了不少力气,终于读懂了大半,也知道了哪些可以借用,哪些不适合的应该去除。

如果真的用 SharpDevelop 来开发真正的应用,我和项目都会趴下的(个人能力所致)。


重点感谢以下朋友:
haiwangstar(南河三(来自于小犬星座))
idiotzeng(白痴)
IMarksman(唉!为什么总是睡不醒呢?)
aboush(无人居)
Jim3(Jim)
cocosoft(pengyun)
brightheroes(闭关|特别想砍暗黑......)


等我目前手上的活儿忙完了,我马上会做这部分。做好了,我会另开帖或者发表一篇专题与大家分享我的实现。

最后加分结帖,可惜我只能加到 200 分。
xaodoudou 2004-06-21
  • 打赏
  • 举报
回复
看来这个帖子还没结,我也进来看看热闹,同时表示对 阿扁为人的 认可
ILoveProgramer 2004-06-21
  • 打赏
  • 举报
回复
设计模式!
brightheroes 2004-06-21
  • 打赏
  • 举报
回复
to hychieftain(不同) 我也打不开,我也是一个搜索的菜鸟。

to AhBian(阿扁)
阿扁从来都很幽默啊,呵呵

个人认为阿扁的水平是勿庸置疑的
倒是看了有位兄弟的置疑之后
决定我应该弄一个三角挂挂
不好意思,太菜了
feic 2004-06-21
  • 打赏
  • 举报
回复
这么看中那个星是什么意思

我到是想请教AhBian (阿扁) 兄几个问题

不能说请教
是请指点
我也在做类似的一个东西
只是现在没有什么明确的思路不知道该如何下手
能否把你的代码给我SEESEE
tianyamoon010@163.com
甴曱 2004-06-20
  • 打赏
  • 举报
回复
风吹两面,树在摇,但根不动。
不要因为一句吧话就放在心上,好多事,想开就好。何况,林子大了,什么鸟都有些。
另:
可以通过堆的原理去想一下这个问题,可能会有所帮助。
Angelnet 2004-06-20
  • 打赏
  • 举报
回复
阿扁??
hychieftain 2004-06-20
  • 打赏
  • 举报
回复
to redbb
你给的网页打不开

在此请大家有空看看这个贴,分享搜索心得
http://community.csdn.net/Expert/topic/3102/3102577.xml?temp=.6999933
jinbingjun 2004-06-20
  • 打赏
  • 举报
回复
学习关注中
happyjun2000 2004-06-19
  • 打赏
  • 举报
回复
学习
HNU 2004-06-19
  • 打赏
  • 举报
回复
wahahasnail 2004-06-19
  • 打赏
  • 举报
回复
我也想知!
AhBian 2004-06-18
  • 打赏
  • 举报
回复
有个建议给版主们:
在会员升星前,要加试是否掌握软件设计模式,尤其是 Command 模式,
如果通不过,就不能升星。

有个建议给已升星的朋友们:
如果有问题要问,请注册一个新的马甲账号,用此账号提问,这样可以......
为什么要这么做?不用我说了吧
Edison1024 2004-06-18
  • 打赏
  • 举报
回复
嘿嘿~,说的好,程序员又不是超人,程序员也有高低之分,哪能什么都懂。
现在一切讲究效率,用最快方法解决当前问题固然好。
有时间可以慢慢学习,但在一个比较急的项目中,谁敢跟老板说,这个问题问别人很容易解决,但是老板您老大给个十天半个月时间让我研究研究好不好?
AhBian 2004-06-18
  • 打赏
  • 举报
回复
TO: chestnuts(c# Sharp)
指教的是,感谢你能这么严肃的批评我。

这里的高手的确很多,也真是我来这里提问的原因。
我相信 chestnuts 也算一位,的确高手不是用几颗星来衡量的。

为了表示对你的敬佩,现将我拿到一星的原因向你汇报:
我得一星的主要原因是专家分超过了 5000 分,这些专家分都是来自其他 CSDN 账号。可能某些分是某些朋友有眼无珠,乱给的,所以要打掉水分,打个六折的话,可能现在还能剩 5000 分,看来一星要降也挺难。

关于设计模式的知识我的确学得不多,虽然看过 COMMAND 模式,但没想到能用在这方面,我的确很菜,是吗?以后要在这方面好好用功一点了。

关于钱的问题,主要是从 Bill Gates 老兄那儿学来的。
都是他出的瘦主意,他倒好,已经是个天才了,还出钱聘了那么多的高手程序员替他写程序,后来居然发达了,成了软件皇帝,还成了世界首富。
瞅着他这么发达,我眼红得很,一时糊涂,钱迷心窍,想想 BILL 这么个天才还用钱请人做,我这个菜鸟没有理由不这么做,所以就用了这么一个招你批评的烂招。
可又想想,这个世界上象这样钱迷心窍的人实在太多了,我真为他们和自己感到“羞耻”。

还有,你可能来这个论坛时间并不长,我的历史要近二年了,主要因为自己时间不够,否则可能要上三、四星了。看来真的高手不是用星的多少来衡量的,象你 5 三角也已是高手,不能因为你没上星,就说你不是高手。

有个建议:上星的朋友应该好好自查一下——自己配不配那么多星?
自查时建议以 chestnuts(c# Sharp) 作为参照。
如果自认为不配的话,可以向总版主申请降级。
chestnuts 2004-06-18
  • 打赏
  • 举报
回复
难道你不知道如果没看过设计模式你在这里会问多少道问题吗?
chestnuts 2004-06-18
  • 打赏
  • 举报
回复
分数不是问题,如果能帮我完全解决掉问题,Money 也是可以商量的。
你的代码和思路很有价值。
??????????!!!!!!!!!!!!!!!!!!!!

我想说:靠!!!!

我不知道你是怎么到一颗红星的!!!
我很奇怪!!!
也非常纳闷!!!
你作为一个程序员!!!
竟然连设计模式都没有看过!!!没有看过??!!!!
这分明是设计模式里最经典的command模式所能解决的问题!!
你看过设计模式吗??!!!
如果没有看过!!身为程序员你不觉得羞耻吗??!!!!
难道以后还要碰到一丁点的小问题就要拿钱来求人解决吗???
IMarksman 2004-06-18
  • 打赏
  • 举报
回复
参考一下SharpDevelop的实现,看看他的源代码。
ioly001 2004-06-18
  • 打赏
  • 举报
回复
提个思路:
你的设计界面, 包括每个对象的属性,状态, 最终是否能用类似xml的东西来进行描述呢?
相信已经有比较好的纯文本的增量算法,现在的文本编辑器不都支持无限次undo/redo么。

加载更多回复(26)

110,538

社区成员

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

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

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