C#RichTextBox:高亮显示+撤消

| 我正在用语法突出显示一个简单的xhtml编辑器。 问题在于,在richtextbox撤消历史记录中,所有内容都已存储。甚至我突出的变化。 我已经发现,如果以编程方式更改Richtextbox,则存在一个
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();
}
    

要回复问题请先登录注册