Вопрос по scroll, c#, events, event-handling – Создать обработчик событий для OnScroll для контроля веб-браузера

3

Кто-нибудь успешно перехватил событие прокрутки мыши в компоненте веб-браузера?

У меня есть два элемента управления веб-браузера, которые я хочу прокручивать одновременно.

Но нет никаких событий прокрутки для веб-браузеров.

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

Здесь я бы назвал свое событие и приступил к коду.

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

Ваш Ответ

2   ответа
1

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)
        {

        }
2

лагается, что оба элемента управления веб-браузера переходят на один и тот же 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, относящиеся к этой операции

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

не работает. Я могу подтвердить, что это определенно работает на моей машине, поэтому, если этот код не работает на вашем, я могу найти альтернативы.

Похожие вопросы