我使用RichEditBox作为富文本编辑器:我在文本中为不同的关键字使用不同的颜色,而用户在richEditBox控件中键入文本。使用RichEditBox格式化富文本格式
进行更改之前,我保存当前选择位置:
ITextSelection selection = richEditBox.Document.Selection;
int originalStartPosition = selection.StartPosition;
int originalEndPosition = selection.EndPosition;
然后,我改变文本的某些部分的颜色,例如:
selection.SetRange(startIndex, stopIndex);
selection.CharacterFormat.ForegroundColor = Colors.Red;
,使所有更改后,我恢复当前的选择位置:
selection.SetRange(originalStartPosition, originalEndPosition);
这工作正常,但SetRange()函数影响因为它会自动滚动以使屏幕上显示的文本的选定部分可以显示在richEditBox中。所以,在所有颜色修改之后,修改滚动位置richEditBox控件。
Final SetRange()函数调用将光标置于其初始位置,但不是滚动位置。
所以,我的问题是:如何在更改颜色后恢复滚动位置richEditBox控制?或者如何修改文字颜色而不影响滚动位置?
这是奇怪的,因为你说的第一个'SetRange'滚动,但第二次却没有 - 或者你的意思是,第二个范围仍在观察中?然后你可以看看这个: http://stackoverflow.com/questions/626988/prevent-autoscrolling-in-richtextbox 因为再次滚动变得非常难看时间。 – MetaColon
SetRange()函数不滚动到初始位置,而只是为了使选择在屏幕上可见。 – Kibernetik
然后我只想引用已经回答的其他问题,我写了一个链接。我想隐藏选择应该解决问题。 – MetaColon