我正在做一个带语法高亮的简单xhtml编辑器。
问题是在richtextbox撤消历史记录中存储了所有内容。甚至我突出的变化。
如果您以编程方式更改richtextbox,我已经发现有一个richtextbox.UndoActionName
应该是“Unknown”。所以当按下ctrl + z时我尝试了类似的东西:
while(richtextbox.CanUndo && richtextbox.UndoActionName == "Unknown"){
richtextbox.Undo();
}
刚刚选择了我的整个文本并且实际上没有撤消任何东西(只是一直循环直到我停止它......)。 所以我的问题是我是否需要在自己的某个地方指定undoactionname,或者我是否可以更改richtextbox来记录仅用于键入的撤消历史记录? 感谢。
编辑:如果我可以向richtextbox发送消息以停止录制撤消历史记录,而我正在突出显示或以某种方式排除或使用未知名称进行操作,那会很酷吗,有什么办法可以做此?
编辑2:我已经用愚蠢的方式完成了它,我将整个文本存储在链表中并在重做时清除了richtextbox并将其填入列表中的最后一项并且然后重新突出显示。也许这有助于任何人
答案 0 :(得分:1)
问题是你正在尝试撤消上一个操作,这将是下一个操作的撤消,因此它将继续这样做。
试试这个:
while(richtextbox.CanUndo) {
richtextbox.Undo();
// Clear the undo buffer to prevent last action from being
richtextbox.ClearUndo();
}