首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AvalonEdit -可见文本

AvalonEdit -可见文本
EN

Stack Overflow用户
提问于 2010-10-22 04:41:23
回答 1查看 1.4K关注 0票数 3

我尝试获取avalonedit控件的可见文本,但VisualLines[]只使用TextLines[]处理自动换行,并且我不知道如何检查TextLine是否在可见区域中。

如果我可以在textview中获得可见文本的起始和结束偏移(或长度),但我没有找到这样的函数或成员,问题也就解决了……

有谁可以帮我?Thx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-22 05:15:41

您可以使用TextView.GetPosition检索文本视图边角的文档位置:

代码语言:javascript
复制
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,只有在可见区域的末端位于文档末尾之后时才会发生这种情况,因此在这些情况下,您应该能够假定文档的末尾:

代码语言:javascript
复制
int startOffset = start != null ? document.GetOffset(start.Value.Location) : document.TextLength;
int endOffset = end != null ? document.GetOffset(end.Value.Location) : document.TextLength;

但是,如果您愿意,也可以直接使用VisualLine/TextLines:VisualLine.VisualTop告诉您视线从哪里开始(Y坐标),并且VisualLine中的每个TextLine都有一个Height属性。使用这些方法,您可以确定哪些文本行是可见的,然后使用它们的GetCharacterHitFromDistance方法检索可视列,并使用VisualLine.GetRelativeOffset计算离可视列的文本偏移量。(这就是TextView.GetPosition方法正在做的事情)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3991735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档