2017-01-05 21 views
2

会社の利用規約に同意するためにWindowsフォームを作成しています。したがって、利用規約はWeb上にあり、WebBrowserコントロールを介してWinFormにナビゲートされます。完全な文書を一番下にスクロールした後でのみ、[承認]ボタンを有効にする必要があります。私は、VScrollBarコントロール(下記参照)やその他のオプションでValueChangedイベントに似たイベントを探しています。WebBrowserコントロールのスクロールバーを検出します。

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

答えて

2

のウィンドウのスクロールイベントをサブスクライブする必要があります。これを行うには:

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

これは正常に機能しました。 –

1

スクロールバーは、WebBrowserコントロールの一部ではありませんが、HTML形式で表示します。あなたは、あなたがwindowオブジェクトのonscrollイベントを処理し、scrollHeight - scrollTopdocumentElementためclientHeightに等しいかどうかを確認する必要があり、表示文書

webBrowser1.Document.Window.Scroll += MyScrollCode; 

https://msdn.microsoft.com/en-us/library/system.windows.forms.htmlwindow.scroll(v=vs.110).aspx

関連する問題