我在让 AvalonEdit TextEditor
滚动到特定行时遇到了很多麻烦。 ScrollTo()
的行为只是滚动直到该行位于 View 中间。我尝试了很多在互联网上找到的不同方法,所以喜欢用
double visualTop = textEditor.TextArea.TextView.GetVisualTopByDocumentLine(line);
但每个人都有自己的问题。例如,在上面的行中,我遇到了 TextView.VisualLines
的异常。
最佳答案
我最终发现,因为我的文本都是统一高度,所以我可以只执行 line height * line# 来获得偏移量。我首先尝试使用 (Editor.TextArea.TextView.DocumentHeight/Editor.Document.LineCount)
来计算行高,但这似乎有点偏离,可能是由于一些浮点问题,你在文档中越往下走越离谱。但是,由于我的文档高度统一,我意识到我可以使用 TextView.DefaultLineHeight
属性并想出了:
double vertOffset = (Editor.TextArea.TextView.DefaultLineHeight) * Line;
Editor.ScrollToVerticalOffset(vertOffset);
这非常一致地滚动到文档中的正确位置。
关于c# - AvalonEdit 滚动到行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39379290/