2010-12-03 3 views
4

Je le code suivant qui, bizarrement, fonctionne pendant quelques secondes, puis cesse de fonctionner (ma méthode de gestionnaire d'événements cesse d'être appelé):Détection de défilement sur un contrôle WebBrowser

public partial class Form1 : Form 
{ 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
     webBrowser1.Navigate("google.com"); 
    } 

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     if (!webBrowser1.IsBusy && webBrowser1.Url == e.Url && webBrowser1.ReadyState == WebBrowserReadyState.Complete) 
     { 
      HTMLWindowEvents_Event windowEvents = webBrowser1.Document.Window.DomWindow as HTMLWindowEvents_Event; 
      windowEvents.onscroll += new HTMLWindowEvents_onscrollEventHandler(windowEvents_onscroll); 
     } 
    } 

    private void windowEvents_onscroll() 
    { 
     HtmlDocument htmlDoc = webBrowser1.Document; 
     int scrollTop = htmlDoc.GetElementsByTagName("HTML")[0].ScrollTop; 
     string text = scrollTop.ToString(); 
    } 
} 
+0

Soit afficher tout le code ou donner plus d'informations. Ce n'est vraiment pas suffisant pour déboguer le code (sauf si quelqu'un essayait de faire exactement la même chose que vous). –

+0

Il n'y a pas d'autre code que d'assigner l'événement 'DocumentCompleted' de mon' WebBrowser' à ma méthode 'OnDocumentCompleted' et de naviguer vers google sur l'événement' Load' de mon 'Form'. C'est tout. – Juan

+0

Mais de toute façon, je posterai le tout si cela peut vous aider à m'aider. – Juan

Répondre

6

OK a trouvé une solution:

protected override void OnDocumentCompleted(WebBrowserDocumentCompletedEventArgs e) 
    { 
     Follow(); 
     if (!IsBusy && Url == e.Url && ReadyState == WebBrowserReadyState.Complete) 
     { 
      Document.Window.AttachEventHandler("onscroll", DocScroll); 
     } 
    } 

S'il est attaché de cette façon, cela fonctionne correctement (jusqu'à maintenant ...). Ne même pas besoin d'utiliser mshtml.

+0

Fonctionne. Je me demande pourquoi il y a si peu de code pour la méthode mshtml. –

Questions connexes