2010-02-25 7 views
0

Comment synchronisez-vous deux commandes winbrows winbrowser?WinForms Webrowser Sync Scroll

Lorsque vous faites défiler l'un vers le haut et vers le bas, l'autre défile au même endroit dans le document sous-jacent?

Répondre

2

J'ai eu cette réponse à l'avance, mais je n'ai pas eu de chance de trouver la réponse via google, donc je poste ici pour la postérité.

En l'événement DocumentCompleted pour les navigateurs, ajouter un gestionnaire à l'événement window.scroll de contrôle WebBrowser

webBrowserRight.Document.Window.Scroll += ScrollHandler; 

J'ai aussi définir les titres ici aussi (en les distinguant plus facile quand je devais plus tard)

webBrowserRight.Document.Title = "right"; 

Ecrire le code de gestionnaire - ici je ne devais synchroniser défiler Verti cally, mais vous pouvez aussi faire la synchronisation horizontale.

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