C# 撤消闪烁中的边距文本更改
我正在用闪烁体编写一个文本编辑器(实际上是闪烁体,但有关香草闪烁体的信息也可能有用)。在这个编辑器中,我们希望在页边距中显示更改信息(例如,如果我修改一行文本,该行将在页边距中显示我的姓名)。我已经设法在修改一行时更改了边距,但是如果有人撤消了更改,我似乎找不到一个好方法来撤消边距更改C# 撤消闪烁中的边距文本更改,c#,undo,scintilla,C#,Undo,Scintilla,我正在用闪烁体编写一个文本编辑器(实际上是闪烁体,但有关香草闪烁体的信息也可能有用)。在这个编辑器中,我们希望在页边距中显示更改信息(例如,如果我修改一行文本,该行将在页边距中显示我的姓名)。我已经设法在修改一行时更改了边距,但是如果有人撤消了更改,我似乎找不到一个好方法来撤消边距更改 我尝试在BeforeTextInsert事件中调用BeginUndoAction,在TextInserted事件结束时调用EndUndoAction,但这似乎没有将边距更改视为可撤消。有没有一种合适的方法来撤销保
我尝试在BeforeTextInsert事件中调用BeginUndoAction,在TextInserted事件结束时调用EndUndoAction,但这似乎没有将边距更改视为可撤消。有没有一种合适的方法来撤销保证金变动?我想我可能需要实现自己的小边距撤消堆栈(或修改斯金特拉的撤消堆栈)并以这种方式处理它,但如果有内置的东西,我宁愿这样做。我刚刚开始创建自己的撤消堆栈以保存边距更改。如果文本正在修改,而不是撤消,我将添加修改的文本、起始位置、行数和字符串列表(每修改一行的边距文本)。如果有修改并且是撤消,我会查看堆栈上的第一项,如果位置和修改的文本相同,我会继续将边距更改回原来的值 看起来不错,不过比我想象的要难看一点。我确实担心堆栈与闪烁撤消堆栈不同步,但我并不真的想修改闪烁源