从WPF RichTextBox中的行号计算ScrollToVerticalOffset的偏移量

时间:2012-04-26 12:14:23

标签: wpf textbox richtextbox offset scrollviewer

我想将RichTextBox的内容移动到内容的特定行。 RichTextBox提供了嵌入式ScrollToVerticalOffset中的方法ScrollViewer。该方法记录在MSDN中,但名为offset的参数的度量单位不是specified。类型为double

TextBox的{​​{3}}属性记录为与设备无关的单位(每单位1/96英寸)。

所以我尝试从字体大小计算偏移量。字体大小以像素为单位。得到的公式是

offset = fontSize * 96 / 72  *  lineNumber;

但这远远落后于所需的路线。现在我正在使用这个计算:

offset = fontSize * lineNumber;

这是对的吗?

1 个答案:

答案 0 :(得分:0)



TextPointer myTextPointer1 = Paragraph.ContentStart.GetPositionAtOffset(20);
TextPointer myTextPointer2 = Paragraph.ContentEnd.GetPositionAtOffset(-10);

RichTextBox.Selection.Select(myTextPointer1, myTextPointer2);
           
DependencyObject currObj = RichTextBox.CaretPosition.Parent;
FrameworkElement fe = currObj as FrameworkElement;
if (fe != null)
{
    fe.BringIntoView();
}
else
{
    FrameworkContentElement fce = currObj as FrameworkContentElement;
    if (fce != null)
    {
        fce.BringIntoView();
    }
}