2013-02-03 71 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;