是否有人成功地在 Web 浏览器组件中捕获了鼠标滚动事件?
我想同时滚动两个 Web 浏览器控件。
但是 Web 浏览器没有滚动事件。
我想在下面创建一个这样的活动? 以前有人做过或见过吗?
private void webCompareSQL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
Document.Window.AttachEventHandler("OnScroll");
}
在这里,我将调用我的事件并继续执行代码。
private void windowEvents_OnScroll()
{
int nPos = GetScrollPos(webCompareSQL.Handle, (int)ScrollBarType.SbVert);
nPos <<= 16;
uint wParam = (uint)ScrollBarCommands.SB_THUMBPOSITION | (uint)nPos;
SendMessage(WebPrevSQL.Handle, (int)Message.WM_VSCROLL, new IntPtr(wParam), new IntPtr(0));
}
我找到了这段代码,但不知道如何使用它。 这是一个事件。
webCompareSQL.Document.Window.Scroll
我能够按如下方式工作。此示例假定两个 Web 浏览器控件都导航到同一个 URL。除了垂直滚动之外,我还同步了水平滚动条 - 如果不需要,可以省略。
webBrowser1.DocumentCompleted
+= new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
webBrowser2.DocumentCompleted
+= new WebBrowserDocumentCompletedEventHandler(webBrowser2_DocumentCompleted);
NavigateToPage("www.google.com");
....
private void NavigateToPage(string url)
{
webBrowser1.Navigate(url);
webBrowser2.Navigate(url);
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.Window.AttachEventHandler("onscroll", OnScrollEventHandler1);
}
private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser2.Document.Window.AttachEventHandler("onscroll", OnScrollEventHandler2);
}
public void OnScrollEventHandler1(object sender, EventArgs e)
{
webBrowser2.Document.GetElementsByTagName("HTML")[0].ScrollTop
= webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop;
webBrowser2.Document.GetElementsByTagName("HTML")[0].ScrollLeft
= webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollLeft;
}
public void OnScrollEventHandler2(object sender, EventArgs e)
{
webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop
= webBrowser2.Document.GetElementsByTagName("HTML")[0].ScrollTop;
webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollLeft
= webBrowser2.Document.GetElementsByTagName("HTML")[0].ScrollLeft;
}
我注意到您在如何在 .NET 中检索 Web 浏览器控件的滚动条位置中的评论,与此操作有关
webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop
不工作。我可以确认这绝对适用于我的机器,因此如果此代码不适用于您的机器,我可以研究替代方案。
真正的事件名称是"onscroll"而不是"onScroll"。MSDN:http://msdn.microsoft.com/en-us/library/ie/ms536966(v=vs.85).aspx
以下代码在事件发生时触发该方法。
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.Window.AttachEventHandler("onscroll", OnScrollEventHandler);
}
public void OnScrollEventHandler(object sender, EventArgs e)
{
}