【问题标题】:How do I find the viewable area of a WPF RichTextBox?如何找到 WPF RichTextBox 的可视区域?
【发布时间】:2009-08-04 17:00:48
【问题描述】:

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

有时插入符号会出现在 RichTextBox 的顶部,有时会出现在底部。如果我只对插入符号所在的行感兴趣,但我对整个段落感兴趣,这会很好。理想情况下,我希望每次都将插入符号放在 RichTextBox 的中间。除非段落长于可视区域。

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

【问题讨论】:

    标签: .net wpf richtextbox


    【解决方案1】:

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

    使用偏移量,您可以使用 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-07
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多