2010-02-26 31 views
1

我試圖讓這個用戶可以在RichTextBox之外按住Ctrl鍵單擊滾動到RichTextBox中的最大的百分比滾動量基於相對於richtextbox頂部的鼠標y.position。下面是我目前使用的代碼:需要有滾動到RichTextBox中的最大滾動量的百分比幫助(RichTextBox的是在ScrollViewer中)

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

更改第一計算到:

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

爲getPosition對富文本框中的結果考慮到了它的整個高度,包括「無形」(滾出)的一部分。所以百分比計算必須根據滾動查看器的「物理」高度來完成。

+0

不幸的是,它仍然顯示相同的行爲,只有小改進:( – Justin