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

时间:2009-08-04 17:00:49

标签: .net wpf richtextbox

我正在开发一个应用程序,我在RichTextBox中有一堆文本。我正跳到文本中的各个位置,(例如跳到一个任意段落)似乎通过将插入符号发送到该位置而工作但我似乎无法控制插入符号在可视区域中的哪个位置。

有时,插入符号位于RichTextBox的顶部,有时位于底部。如果我只对插入符号所在的行感兴趣,但我对整个段落感兴趣,那就没问题。理想的是,我希望每次都能在RichTextBox的中间放置插入符号。除非段落比可见区域长。

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

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。 RichTextBox具有VerticalOffset属性,当添加到textpointer的位置时,它将为您提供实际偏移量。

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

一个例子: 假设我想要滚动到

的位置有一个TextPoint pointer1
Rect thisposition = pointer1.GetCharacterRect(LogicalDirection.Forward);

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


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