如何同步滚动两个winforms webbrowser控件?
当您向上和向下滚动一个时,另一个滚动到基础文档中的相同位置的含义?
答案 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;
}