c# - AvalonEdit 滚动到行

标签 c# scroll avalonedit

我在让 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/

相关文章:

css - 尝试让 jQuery Mobile 元素在 TouchStart 上突出显示

Java Swing - JScrollPane 使视口(viewport)宽度适合 JScrollPane 宽度

c# - AvalonEdit 作为文本查看器 - 无插入符号

c# - 获取/设置 RichTextBox 的第一个可见行

c# - 如何在 Visual Studio 2017 中将 PCL 更改为 .net 平台标准库?

c# - 在 C# 控制台应用程序中每 10 秒从 api 更新一次恒温器结果

c# - Windows 10 IOT Raspberry PI 上的 ASP.NET MVC Web 应用程序

avalonedit - 突出显示 avalonedit 中出现的所有单词

layout - AvalonEdit:如何使其从右到左?

c# - 身份验证过滤器不适用于 Web API 中的授权过滤器