Need help with scrolling to a percentage of richtextbox's maximum scroll amount (the richtextbox is in a scrollviewer)

I am trying to make it so that a user can ctrl-click outside of a richtextbox to scroll to a percentage of the richtextbox's maximum scroll amount based on the y.position of the mouse relative to the top of the richtextbox. Here's the code I'm currently using:

    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);
            }
        }
    }

Right now it seems to work until I scroll to the bottom and then I have to click past halfway up the richtextbox in order to make it scroll upwards. What am I doing wrong?

Answers


Change the first computation to:

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

The result of GetPosition on the rich text box takes into account its full height, including the "invisible" (scrolled out) part. So the percentage computation must be done according to the "physical" height of the scroll viewer.


Need Your Help

change line in php file

php file variables

for example I have this php file:

java.lang.NoClassDefFoundError while executing in spring

java eclipse

getting error of java.lang.NoClassDefFoundError while executing the submit button, the compilation was really successfull and the build/class/