需要帮助滚动到richtextbox的最大滚动量的百分比(richtextbox在滚动查看器中)

时间:2010-02-26 22:53:02

标签: c# wpf richtextbox scrollviewer

我正在努力使用户可以在richtextbox外部按住Ctrl键单击滚动到richtextbox的最大滚动量的百分比,该百分比基于鼠标相对于richtextbox顶部的y.position。这是我目前正在使用的代码:

    private void MainWindow_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (Keyboard.Modifiers == ModifierKeys.Control)
        {
            if (!richTextBox1.IsMouseOver)
            {
                double d = (e.GetPosition(richTextBox1).Y / richTextBox1.ActualHeight);
                if (d > 1) { d = 1; }
                d = (richtextboxScrollViewer.ExtentHeight * d);
                richtextboxScrollViewer.ScrollToVerticalOffset(d);
            }
        }
    }

现在它似乎工作,直到我滚动到底部,然后我必须点击上一半的richtextbox,以使其向上滚动。我做错了什么?

1 个答案:

答案 0 :(得分:1)

将第一个计算更改为:

double d = (e.GetPosition(richtextboxScrollViewer).Y / richtextboxScrollViewer.ViewportHeight);

富文本框上的GetPosition结果考虑了其完整高度,包括“不可见”(向外滚动)部分。因此,百分比计算必须根据滚动查看器的“物理”高度来完成。

相关问题