使用自定义滚动条的WPF Web浏览器控件

时间:2013-02-03 06:03:38

标签: c# wpf scrollbar webbrowser-control

我正在尝试为Web browser Control制作自定义滚动条。

我使用了Scroll Bar Control,因此我将Scroll Bar Control附加到Web 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;

在滚动滚动条的同时:

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

这是有效的,但ScrollBar.Maximum值始终大于滚动条place.dose ScrollBar.ViewportSizeScrollBar.Maximum 设置正确吗?

我希望我能用这张图片正确解释我的问题:

enter image description here

1 个答案:

答案 0 :(得分:2)

经过一些研究,我发现滚动条maximum属性必须根据以下公式计算:

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

所以我只是这样做而且效果很好:

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