c# 中用{richTextBox.Undo();richTextBox.ClearUndo();}做撤销为什么会无限的删除呀

 我来答
HAL9000PLUS
2010-03-15 · TA获得超过1279个赞
知道小有建树答主
回答量:663
采纳率:0%
帮助的人:721万
展开全部
ClearUndo的功能是清理可回退的步子。而Undo是回退上一次调用 ClearUndo到现在又发生的修改。

其原理是:
richtextbox维护了一个可回退的步子的列表,当你执行UnDo时,他就把所有的回退步子全执行一遍。
如果你调用了ClearUndo,就会把回退步子列表清掉,然后当你又继续编辑richtextbox的内容时,新的回退列表会又开始生成。这样,当你又执行Undo时,又会执行全部回退步子,于是就回退到了最后一次执行ClearUndo时的样子。

下面是一个例子:一个保存(假的啦!)一个回退按钮。
当你按下保存时,执行clearundo,当你按下回退时,执行Undo.
测试过程:写下“12345”,按下“保存”,然后再继续写“abcde”,
这时,框里的内容是"12345abcde", 此时,按下“回退”,则返回到上一次按下“保存”的状态,也就是“12345”.

private void btnUndo_Click(object sender, EventArgs e)
{
this.richTextBox1.Undo();

}

private void btnSaveStat_Click(object sender, EventArgs e)
{
this.richTextBox1.ClearUndo();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式