我尝试获取avalonedit控件的可见文本,但VisualLines[]
仅处理wordwrap与TextLines[]
,我不知道如何检查TextLine是否在可见区域中。AvalonEdit - 可见文本
的问题也将得到解决,如果我能得到TextView的开始 - 和可见的文本endoffset(或长度),但我没有找到这样的功能或成员...
谁能帮助我? THX
我尝试获取avalonedit控件的可见文本,但VisualLines[]
仅处理wordwrap与TextLines[]
,我不知道如何检查TextLine是否在可见区域中。AvalonEdit - 可见文本
的问题也将得到解决,如果我能得到TextView的开始 - 和可见的文本endoffset(或长度),但我没有找到这样的功能或成员...
谁能帮助我? THX
您可以使用TextView.GetPosition
检索文本视图的角落文档位置:
TextViewPosition? start = textView.GetPosition(new Point(0, 0) + textView.ScrollOffset);
TextViewPosition? end = textView.GetPosition(new Point(textView.ActualWidth, textView.ActualHeight) + textView.ScrollOffset);
您可以使用TextDocument.GetOffset
到TextViewPosition转换成偏移。请注意,如果在可见区域内的指定点处没有线条时,只有当可见区域的末端位于文档的末尾时才会出现此行,则您可以返回null
,因此您应该能够假设结束内的每一个TextLine VisualLine.VisualTop
告诉你视线开始的地方(Y坐标),并且:
int startOffset = start != null ? document.GetOffset(start.Value.Location) : document.TextLength;
int endOffset = end != null ? document.GetOffset(end.Value.Location) : document.TextLength;
但是,如果你愿意,你也可以直接与VisualLine/TextLine的工作:在这种情况下的文件VisualLine有一个Height
属性。使用这些,您可以确定哪些文本行可见,然后使用它们的GetCharacterHitFromDistance
方法检索可视列,并使用VisualLine.GetRelativeOffset
来计算可视列的文本偏移量。 (这是TextView.GetPosition
方法正在做什么)
Aweseome!现在我的拼写检查工作正常。非常感谢你! – zee 2010-10-21 21:31:38
作为个人参考,以下是AvalonEdit文档中“TextView.GetPosition”当前参考页面的链接:http://avalonedit.net/documentation/html/070c6779-a358-33f0-09f4-7a3b49d36ee7.htm – wil 2014-11-25 05:19:50