WinForms Webrowser Sync Scroll - PullRequest
       7

WinForms Webrowser Sync Scroll

0 голосов
/ 26 февраля 2010

Как синхронизировать прокрутку двух элементов управления winforms веб-браузера?

То есть, когда вы прокручиваете одну вверх и вниз, другая прокручивается к тому же месту в базовом документе?

1 Ответ

2 голосов
/ 26 февраля 2010

У меня был этот ответ раньше времени, но мне не повезло найти ответ через Google, поэтому я публикую здесь для потомков.

В событии DocumentCompleted для браузеров добавьте обработчик в событие 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...