繁体   English   中英

C#RichTextBox:突出显示+撤消

[英]C# RichTextBox: Highlighting + Undo

我正在做一个带语法高亮的简单xhtml编辑器。 问题是在richtextbox撤消历史记录中存储了所有内容。 甚至我突出的变化。 我已经发现有一个richtextbox.UndoActionName ,如果你以编程方式更改richtextbox.UndoActionName ,它应该是“Unknown”。 所以当按下ctrl + z时我尝试了类似的东西:

while(richtextbox.CanUndo && richtextbox.UndoActionName == "Unknown"){
    richtextbox.Undo();
}

这只是选择了我的整个文本,并没有实际撤消任何东西(只是保持循环,直到我停止它...)。 所以我的问题是我是否需要在自己的某个地方指定undoactionname,或者我是否可以更改richtextbox来记录仅用于键入的撤消历史记录? 谢谢。

编辑:如果我可以向richtextbox发送消息以停止记录撤消历史记录,而我正在突出显示或以某种方式排除或使用未知名称进行操作,那会很酷吗,有什么办法可以做到这一点吗?

编辑2:我已经用愚蠢的方式完成了它,我将整个文本存储在链表中,当重做时我清除了richtextbox并用列表中的最后一项填充它然后重新突出显示。 也许这有助于任何人

问题是你正在尝试撤消上一个操作,这将是下一个操作的撤消,因此它将继续这样做。

尝试这个:

while(richtextbox.CanUndo) {
  richtextbox.Undo();
  // Clear the undo buffer to prevent last action from being
  richtextbox.ClearUndo();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM