2010-02-25 54 views
0

如何同步滾動兩個winforms webrowser控件?WinForms Webrowser同步滾動

含義當您向上和向下滾動一個滾動條時,另一個滾動到底層文檔中的相同位置?

回答

2

我有提前這個答案,但沒有運氣通過谷歌找到答案,所以我在這裏張貼的後代。

的瀏覽器DocumentCompleted事件,處理程序添加到WebBrowser控件的事件Window.Scroll

webBrowserRight.Document.Window.Scroll += ScrollHandler; 

我也在此處設置的標題太(做區分它們更容易,當我需要後來)

webBrowserRight.Document.Title = "right"; 

處理程序代碼 - 在這裏我只需要同步滾動VERTI cally,但你也可以做水平同步。

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; 
}