Créer un gestionnaire d’événements pour OnScroll pour le contrôle du navigateur Web

Quelqu’un at-il réussi à piéger l’événement de défilement de la souris dans un composant Web?

J’ai deux contrôles de navigateur Web que je voudrais faire défiler en même temps.

Mais il n’y a pas d’événements de défilement pour les navigateurs Web.

J’aimerais créer un événement de ce genre ci-dessous? est-ce que quelqu’un a déjà fait ou vu cela auparavant?

private void webCompareSQL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { Document.Window.AttachEventHandler("OnScroll"); } 

Ici, je voudrais appeler mon événement et procéder avec le code.

 private void windowEvents_OnScroll() { int nPos = GetScrollPos(webCompareSQL.Handle, (int)ScrollBarType.SbVert); nPos <<= 16; uint wParam = (uint)ScrollBarCommands.SB_THUMBPOSITION | (uint)nPos; SendMessage(WebPrevSQL.Handle, (int)Message.WM_VSCROLL, new IntPtr(wParam), new IntPtr(0)); } 

J’ai trouvé ce code mais je ne sais pas comment l’utiliser. c’est un événement.

 webCompareSQL.Document.Window.Scroll 

Le nom réel de l’événement est “onscroll” et non “OnScroll”. MSDN: http: //msdn.microsoft.com/en-us/library/ie/ms536966 (v = vs.85) .aspx

Le code suivant déclenche la méthode lorsqu’un événement se produit.

  private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { webBrowser1.Document.Window.AttachEventHandler("onscroll", OnScrollEventHandler); } public void OnScrollEventHandler(object sender, EventArgs e) { } 

J’ai pu obtenir cela fonctionne comme suit. Cet exemple suppose que les deux contrôles de navigateur Web accèdent à la même URL. Je synchronise également la barre de défilement horizontale en plus de la verticale – cette option peut être omise si cela n’est pas nécessaire.

 webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); webBrowser2.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser2_DocumentCompleted); NavigateToPage("www.google.com"); .... private void NavigateToPage(ssortingng url) { webBrowser1.Navigate(url); webBrowser2.Navigate(url); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { webBrowser1.Document.Window.AttachEventHandler("onscroll", OnScrollEventHandler1); } private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { webBrowser2.Document.Window.AttachEventHandler("onscroll", OnScrollEventHandler2); } public void OnScrollEventHandler1(object sender, EventArgs e) { webBrowser2.Document.GetElementsByTagName("HTML")[0].ScrollTop = webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop; webBrowser2.Document.GetElementsByTagName("HTML")[0].ScrollLeft = webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollLeft; } public void OnScrollEventHandler2(object sender, EventArgs e) { webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop = webBrowser2.Document.GetElementsByTagName("HTML")[0].ScrollTop; webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollLeft = webBrowser2.Document.GetElementsByTagName("HTML")[0].ScrollLeft; } 

Je note votre commentaire dans Comment faire pour récupérer la position de la barre de défilement du contrôle WebBrowser dans .NET , relative à cette opération

 webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop 

ne fonctionne pas. Je peux confirmer que cela fonctionne définitivement sur ma machine. Par conséquent, si ce code ne fonctionne pas sur le vôtre, je peux rechercher des alternatives.