.net 如何找到WPF RichTextBox的可视区域?

.net 如何找到WPF RichTextBox的可视区域?,.net,wpf,richtextbox,.net,Wpf,Richtextbox,我正在开发一个应用程序,我在RichTextBox中有一堆文本。我跳转到文本中的不同位置(例如跳转到任意段落),这似乎是通过将插入符号发送到该位置来实现的,但我似乎无法控制插入符号在可视区域中的结束位置 有时插入符号位于RichTextBox的顶部,有时位于底部。如果我只对插入符号有兴趣,但我对整个段落感兴趣,那就太好了。理想的是,我每次都想把插入符号放在ReXTrimeBox的中间。除非段落比可视区域长 我的问题。有没有办法确定RichTextBox的可视区域,并计算如何正确定位插入符号?如果

我正在开发一个应用程序,我在RichTextBox中有一堆文本。我跳转到文本中的不同位置(例如跳转到任意段落),这似乎是通过将插入符号发送到该位置来实现的,但我似乎无法控制插入符号在可视区域中的结束位置

有时插入符号位于RichTextBox的顶部,有时位于底部。如果我只对插入符号有兴趣,但我对整个段落感兴趣,那就太好了。理想的是,我每次都想把插入符号放在ReXTrimeBox的中间。除非段落比可视区域长

我的问题。有没有办法确定RichTextBox的可视区域,并计算如何正确定位插入符号?如果我有这个价值,我就可以决定是否把插入符号放在中间(知道中间在哪里)还是在顶部。谢谢你的帮助。

我解决了这个问题。 RichTextBox有一个VerticalOffset属性,当添加到textpointer的位置时,该属性将给出实际的偏移量

使用偏移量,可以使用RichTextBox.ScrollToVerticalOffset根据RichTextBox.ActualHeight属性滚动框

例如: 假设我在要滚动到的位置有一个TextPoint指针1

Rect thisposition = pointer1.GetCharacterRect(LogicalDirection.Forward);

richTextBox1.Focus();
richTextBox1.CaretPosition = pointer1;


double totaloffset = thisposition.Top + richTextBox1.VerticalOffset;
richTextBox1.ScrollToVerticalOffset(totaloffset - richTextBox1.ActualHeight / 2);