c# 实现撤销重做的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:19:41
虽然是个被问烂的问题,不过我还是希望各位能给我提供一点可行的方法。我试过对整个rtf进行压栈,然后每次撤销都对richtextbox重新赋值,不过这样太慢了,而且很耗空间。希望大家能给点好的方法,最好说具体点,算帮个忙啦,给分哦~

不会呀

你可以保存操作。因为操作大多相对内容是比较容易保存和省空间的,而且也很容易还原。这只是个思路。
举个例子,在 richtextbox 的 textchange 事件里处理几个东西,3个堆栈(最好是列表和位置代替)分别用来保存代理(也就是改变所使用的操作,比如添加,删除等),位置,和操作内容(即添加或删除的内容), 然后一起出栈,一起入栈,(我建议这里用列表和列表当前位置来代替堆栈,这样撤销可以向前向后,很好玩,像office那样,当前位置小于0了,那就不能向前,当前位置大于总操作数了,就不能向后,也同样可以控制新的操作的位置)。