2017-01-05 1 views
2

Ich erstelle ein Windows-Formular, um einige Bedingungen für ein Unternehmen zu akzeptieren. Die Nutzungsbedingungen befinden sich im Web und werden über das WebBrowser-Steuerelement zum WinForm-Steuerelement geleitet. Es ist erforderlich, die Schaltfläche Akzeptieren erst zu aktivieren, nachdem das gesamte Dokument nach unten gescrollt wurde. Ich suche nach einem Event ähnlich dem ValueChanged Event im VScrollBar-Steuerelement (siehe unten) oder einer anderen Option.Erkennen nach unten im WebBrowser-Steuerelement

private void vScrollBar1_ValueChanged(object sender, EventArgs e) 
    { 
     if (vScrollBar1.Value+9 == vScrollBar1.Maximum) 
     { 
      acceptBtn.Enabled = true; 
     } 
    } 

Antwort

2

Sie sollten onscroll Fall window Objekt behandeln abonnieren und überprüfen, ob scrollHeight - scrollTop-clientHeight für documentElement entspricht. Um dies zu tun:

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

void OnScroll(object sender, EventArgs e) 
{ 
    var script = 
    @"(function() 
     { 
      var e = document.documentElement; 
      if (e.scrollHeight - e.scrollTop === e.clientHeight) 
       return true; 
      else 
       return false; 
     })();"; 
    var result = webBrowser1.Document.InvokeScript("eval", new object[] { script }); 
    if ((bool)result) 
     MessageBox.Show("Scrolled to end!"); 
} 
+0

Das hat gut funktioniert! –