2012-06-20 2 views
2

웹 브라우저 구성 요소에서 마우스 스크롤 이벤트를 성공적으로 트래핑 했습니까?웹 브라우저 컨트롤 용 OnScroll 이벤트 핸들러 만들기

저는 동시에 스크롤 할 두 개의 웹 브라우저 컨트롤이 있습니다.

하지만 웹 브라우저에는 스크롤 이벤트가 없습니다.

다음과 같은 일정을 만들고 싶습니다. 전에 한 번 해 본 사람이 있습니까?

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 

답변

1

실제 이벤트 이름은 "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) 
     { 

     } 
1

나는 다음과 같이 작동 할 수있었습니다. 이 예제에서는 두 웹 브라우저 컨트롤이 동일한 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; 
} 

나는 작동하지 않는이 작업

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

관련, How to retrieve the scrollbar position of the webbrowser control in .NET에 댓글을 확인합니다. 이 코드가 내 컴퓨터에서 제대로 작동하는지 확인할 수 있으므로이 코드가 작동하지 않으면 대안을 살펴볼 수 있습니다.