为OnScroll创建Web浏览器控件的事件处理程序 [英] Create event handler for OnScroll for web browser control
问题描述
我有两个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)非营利组织;
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中的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屋!