2017-01-05 2 views
2

Я создаю Windows Form, чтобы принять некоторые условия для компании. Таким образом, условия и положения находятся в Интернете, и они перемещаются в WinForm через элемент управления WebBrowser. Требуется включить кнопку «Принять» только после прокрутки полного документа до нижней. Я ищу событие, подобное событию ValueChanged в элементе управления VScrollBar (см. Ниже) или любой другой вариант.Обнаружение прокрутки вниз в элементе управления WebBrowser

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

ответ

2

Вы должны обрабатывать onscroll событие window объекта и проверить, если scrollHeight - scrollTop равен clientHeight для documentElement. Для этого:

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

Это сработало отлично! –

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