Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 撤消闪烁中的边距文本更改_C#_Undo_Scintilla - Fatal编程技术网

C# 撤消闪烁中的边距文本更改

C# 撤消闪烁中的边距文本更改,c#,undo,scintilla,C#,Undo,Scintilla,我正在用闪烁体编写一个文本编辑器(实际上是闪烁体,但有关香草闪烁体的信息也可能有用)。在这个编辑器中,我们希望在页边距中显示更改信息(例如,如果我修改一行文本,该行将在页边距中显示我的姓名)。我已经设法在修改一行时更改了边距,但是如果有人撤消了更改,我似乎找不到一个好方法来撤消边距更改 我尝试在BeforeTextInsert事件中调用BeginUndoAction,在TextInserted事件结束时调用EndUndoAction,但这似乎没有将边距更改视为可撤消。有没有一种合适的方法来撤销保

我正在用闪烁体编写一个文本编辑器(实际上是闪烁体,但有关香草闪烁体的信息也可能有用)。在这个编辑器中,我们希望在页边距中显示更改信息(例如,如果我修改一行文本,该行将在页边距中显示我的姓名)。我已经设法在修改一行时更改了边距,但是如果有人撤消了更改,我似乎找不到一个好方法来撤消边距更改


我尝试在BeforeTextInsert事件中调用BeginUndoAction,在TextInserted事件结束时调用EndUndoAction,但这似乎没有将边距更改视为可撤消。有没有一种合适的方法来撤销保证金变动?我想我可能需要实现自己的小边距撤消堆栈(或修改斯金特拉的撤消堆栈)并以这种方式处理它,但如果有内置的东西,我宁愿这样做。

我刚刚开始创建自己的撤消堆栈以保存边距更改。如果文本正在修改,而不是撤消,我将添加修改的文本、起始位置、行数和字符串列表(每修改一行的边距文本)。如果有修改并且是撤消,我会查看堆栈上的第一项,如果位置和修改的文本相同,我会继续将边距更改回原来的值

看起来不错,不过比我想象的要难看一点。我确实担心堆栈与闪烁撤消堆栈不同步,但我并不真的想修改闪烁源