1

我正在尝试使用户可以在富文本框外部按住 ctrl 单击,以根据鼠标相对于富文本框顶部的 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);
            }
        }
    }

现在它似乎可以工作,直到我滚动到底部,然后我必须点击富文本框的一半才能使其向上滚动。我究竟做错了什么?

4

1 回答 1

1

将第一个计算更改为:

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

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

于 2010-02-26T23:16:50.357 回答