c# 中用{richTextBox.Undo();richTextBox.ClearUndo();}做撤销为什么会无限的删除呀
1个回答
展开全部
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();
}
其原理是:
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();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询