2010-12-03 2 views
4

Я следующий код, который, причудливо, работает в течение нескольких секунд, а затем перестает работать (мой метод обработчика событий перестает называется):Обнаружить прокрутки в элементе управления 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

Либо отправьте весь код, либо дайте больше информации. Этого действительно недостаточно, чтобы отлаживать код (если кто-то не пытался сделать ТОЧНОЕ то же, что и вы). – 2010-12-03 07:59:26

+0

Нет другого кода, кроме как присваивать событие `DocumentCompleted` моего` WebBrowser` моему методу «OnDocumentCompleted» и переходить к google на мероприятие `Load` моей` Form`. Это все. – Juan 2010-12-03 08:01:44

ответ

6

OK Найдено решение:

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

Если прилагается таким образом, он работает нормально (до сих пор ...). Даже не нужно использовать mshtml.

Смежные вопросы