WinForms Web浏览器同步滚动

时间:2010-02-25 21:34:07

标签: c# .net winforms

如何同步滚动两个winforms webbrowser控件?

当您向上和向下滚动一个时,另一个滚动到基础文档中的相同位置的含义?

1 个答案:

答案 0 :(得分:2)

我提前得到了这个答案但没有运气通过谷歌找到答案,所以我在这里张贴后代。

浏览器的DocumentCompleted事件中,为webbrowser控件的Window.Scroll事件添加处理程序

webBrowserRight.Document.Window.Scroll += ScrollHandler;

我也在这里设置标题(在我需要的时候更容易区分它们)

webBrowserRight.Document.Title = "right";

处理程序代码 - 这里我只需要垂直同步滚动,但你也可以进行水平同步。

private void ScrollHandler( object sender, EventArgs e )
{
    var scrolledBrowser = sender as HtmlWindow;
    if( scrolledBrowser == null ) return;

    // here you can see where I needed to distinguish the browser windows
    // none of the document, window etc properties matched the sender, so I
    // resorted to this hacky way
    WebBrowser otherBrowser = scrolledBrowser.Document.Title == "right" 
    ? webBrowserLeft 
    : webBrowserRight;
    int y = scrolledBrowser.Document.Body.ScrollRectangle.Top;
    otherBrowser.Document.Body.ScrollTop = y;
}