2013-02-03 70 views
1

我正在嘗試爲Web browser Control自定義滾動條。使用自定義滾動條的WPF Web瀏覽器控件

我用這個Scroll Bar Control,所以我連着Scroll Bar ControlWeb browser Control 使用下面的代碼:

 Doc = (mshtml.HTMLDocument)browser.Document; 
     Doc.parentWindow.document.body.style.overflow = "hidden"; 
     mshtml.IHTMLElement2 ScrolablePlace= (mshtml.IHTMLElement2)Doc.getElementById("ScrolablePlace"); 
     ScrollBar.ViewportSize = browser.ActualHeight; 
     ScrollBar.Maximum = ScrolablePlace.scrollHeight; 

同時scroling scrolbar:

private void ScrollBar_Scroll(object sender, ScrollEventArgs e) 
     { 
      if (Doc != null) 
      { 
       Doc.parentWindow.scroll(0, (int)e.NewValue); 
      } 
     } 

這是工作,但ScrollBar.Maximum值始終爲大於滾動條的位置012.dc和ScrollBar.Maximum 設置是否正確?

我希望我能有這個正確的圖像解釋我的問題:

enter image description here

+0

我有同樣的問題,我需要自定義WPF webbrowser的滾動條,並根據您的問題和答案我無法解決我的問題。你能解釋一下嗎? –

回答

2

經過一番研究,我發現,一個滾動條maximum屬性必須從這個公式計算:

scrolbar.maximum=(maxsize-scrolbar.ViewportSize)+scrolbar.smallchanges 

所以我乾脆這樣做,它工作正常:

ScrollBar.Maximum = ScrolablePlace.scrollHeight- browser.ActualHeight+ScrollBar.SmallChange;