VB中如何简单的实现撤消(undo)和恢复(redo)功能

比如我设置了点击一个label后一条线变红同时Text1中出现一句话当然这样的label很多颜色啊Text1中出现的语句啊都不同如何设置一个简单的撤消健可以依次撤消任意上... 比如我设置了点击一个label后一条线变红同时Text1中出现一句话
当然这样的label很多 颜色啊Text1中出现的语句啊都不同
如何设置一个简单的撤消健 可以依次撤消任意上步操作 和恢复健依次恢复
一定要简单的操作
请告诉我 声明、label_Click、还有撤消command的代码里分别可能要加什么
我有很多label,每个功能都不同的 那是不是撤消功能就必须每个label都编写anti_label?
还有最重要的,我该如何重新判断执行label1_click还是label3_click呢 call的方法好象不能针对变量名
展开
 我来答
luomandick
2010-05-03 · TA获得超过1175个赞
知道小有建树答主
回答量:902
采纳率:0%
帮助的人:717万
展开全部
不经过优化最简单的就是记录每一步的操作,然后反向操作回去就好了··,比方说你可以加两个visible为FALSE的list(list1和list2)
其中list1用来存储现在当前的操作,list2用来存储历史操作。
你每操作一步,比方说点击了label2,那list1中就additem "label2"
其中list1增加项目时候,list2复制为list1

要撤销的时候,就是将list1的最后一项删除掉,这个时候list2保持不变。要还原的话,先判断list1.listcount 是否和 list2.listcount相同。若相同则不进行还原(可以提示说已经是最新的操作了),若不相同,则list1.additem list2.list(list1.listcount)

上面说的只是记录还原和撤销的记录,其关联的是还原和撤销的功能,比方说你简单点的可以将所有的line的颜色以及text全部初始化,然后只要你激发了撤销恢复功能,不论你是还原还是撤销,都是重新执行一遍list1中的存在的信息记录。比方说你list1中的记录是 label1 label3 label4,那就相当于顺序执行 label1_click label3_click label4_click 那就可以了··
如果你要效率高一点的话,那就你在编程的时候对每一个执行任务编写一个反向编程 比方说你有label1_click 那你就变写一个还原label1_click的函数比方说是anti_label1,那你撤销时候就调用这个函数好了··,还原的时候当然还是调用原来的那个函数。不过基本上不是特别多的话,用第一种方法就够用了··省事···呵呵···不知不觉地说了这么多··呵呵·· 当然也可以用数组来存储当前操作和历史操作的···
百度网友f2734c0d2
2010-05-03 · TA获得超过666个赞
知道小有建树答主
回答量:975
采纳率:100%
帮助的人:431万
展开全部
记数.每步+1
撤消时-1
- -!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式