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