对于OnScroll创建事件处理程序,Web浏览器控件 [英] Create event handler for OnScroll for web browser control

查看:118
本文介绍了对于OnScroll创建事件处理程序,Web浏览器控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人成功捕获鼠标滚动的事件在网络browerser成分?



我有两个Web浏览器控件我想在同一时间滚动。



但也有网络浏览器没有滚动的事件。



我想创建一个事件像下面这样?有没有人做过或见过这个?



 私人无效webCompareSQL_DocumentCompleted(对象发件人,WebBrowserDocumentCompletedEventArgs E)
{
Document.Window.AttachEventHandler(OnScroll);
}



在这里,我会叫我的事件,并使用代码进行。



 私人无效windowEvents_OnScroll()
{
INT非营利组织= GetScrollPos(webCompareSQL.Handle,(INT)ScrollBarType.SbVert) ;
非营利组织<< = 16;
UINT wParam参数=(UINT)ScrollBarCommands.SB_THUMBPOSITION | (UINT)非营利组织;
SendMessage函数(WebPrevSQL.Handle,(INT)Message.WM_VSCROLL,新的IntPtr(wParam参数),新的IntPtr(0));
}



我发现这个代码,但不知道如何使用它。它的一个事件。

  webCompareSQL.Document.Window.Scroll 


解决方案

我能够如下得到这个工作。这个例子假定两个Web浏览器控件导航到相同的URL。我也是,除了垂直同步水平滚动条 - 这可以如果不需要它可以省略

  webBrowser1.DocumentCompleted 
+ =新WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
webBrowser2.DocumentCompleted
+ =新WebBrowserDocumentCompletedEventHandler(webBrowser2_DocumentCompleted);

NavigateToPage(www.google.com);

....

私人无效NavigateToPage(字符串URL)
{
WebBrowser1.Navigate时(URL);
webBrowser2.Navigate(URL);
}

私人无效webBrowser1_DocumentCompleted(对象发件人,WebBrowserDocumentCompletedEventArgs E)
{
webBrowser1.Document.Window.AttachEventHandler(onscroll,OnScrollEventHandler1);
}

私人无效webBrowser2_DocumentCompleted(对象发件人,WebBrowserDocumentCompletedEventArgs E)
{
webBrowser2.Document.Window.AttachEventHandler(onscroll,OnScrollEventHandler2);
}

公共无效OnScrollEventHandler1(对象发件人,EventArgs五)
{
webBrowser2.Document.GetElementsByTagName(HTML)[0] .ScrollTop
= webBrowser1.Document.GetElementsByTagName(HTML)[0] .ScrollTop;
webBrowser2.Document.GetElementsByTagName(HTML)[0] .ScrollLeft
= webBrowser1.Document.GetElementsByTagName(HTML)[0] .ScrollLeft;
}

公共无效OnScrollEventHandler2(对象发件人,EventArgs五)
{
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 WebBrowser控件的滚动条的位置,与这种操作

  webBrowser1.Document.GetElementsByTagName(HTML)[0] .ScrollTop 

不工作。我可以证实,这绝对作品在我的机器上,因此,如果这个代码不上你,我可以考虑的选择工作。


Has any one successfully trapped the event of mouse scroll in a web browerser component?

I have two web browser controls i would like to scroll at the same time.

But there are no scroll events for web browsers.

I would like to create an event something like this below? has any one done or seen this before?

 private void webCompareSQL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
                Document.Window.AttachEventHandler("OnScroll");            
        }

Here i would call my event and proceed with the code.

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));        
}

I have found this code but don't know how to use it. its an event.

webCompareSQL.Document.Window.Scroll

解决方案

I was able to get this working as follows. This example assumes that both web browser controls are navigating to the same Url. I am also syncing the horizontal scrollbar in addition to the vertical - this can be omitted if it is not required.

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;
} 

I note your comment in How to retrieve the scrollbar position of the webbrowser control in .NET, relating to this operation

webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop

not working. I can confirm that this definitely works on my machine, so if this code does not work on yours I can look into alternatives.

这篇关于对于OnScroll创建事件处理程序,Web浏览器控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆