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 に答える