Нужна помощь с прокруткой до процента от максимальной суммы прокрутки richtextbox (richtextbox находится в окне просмотра прокрутки) - PullRequest
1 голос
/ 27 февраля 2010

Я пытаюсь сделать так, чтобы пользователь мог щелкнуть левой кнопкой мыши ctrl за пределами richtextbox, чтобы прокрутить до процента от максимальной суммы прокрутки richtextbox в зависимости от положения мыши по отношению к верхней части richtextbox. Вот код, который я сейчас использую:

    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 Ответ

1 голос
/ 27 февраля 2010

Измените первое вычисление на:

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

Результат GetPosition для расширенного текстового поля учитывает его полную высоту, включая «невидимую» (выделенную) часть. Поэтому вычисление в процентах должно выполняться в соответствии с «физической» высотой средства просмотра прокрутки.

...