2010-08-12 4 views
0

.NET의 WebBrowser에서 모든 마우스 이벤트를 캡처하여 처리하고 WebBrowser에서 가져 오는 것을 방지해야합니다. 이것을 달성 할 수있는 방법이 있습니까? 컨트롤이 비활성화 된 경우 마우스 이벤트를 처리 할 수있는 방법이 있는지 궁금합니다.컨트롤에 모든 마우스 이벤트를 트래핑하는 방법은 무엇입니까?

+0

당신이 WPF를 사용하는 경우, 당신이 누워 수를 투명 캔버스를 WebBrowser 컨트롤 상단에 배치하고 Canvas로 모든 이벤트를 잡아낼 수 있습니다 ... Winforms는 다른 이야기입니다. –

+0

중복? http://stackoverflow.com/questions/3268619/catching-a-contained-controls-mouse-events-in-a-usercontrol –

+0

이것은 조금 이상하게 읽습니다. 무시해도 될까요? 당신이 그들과 함께 무엇이든하는 진짜 욕망이없는 경우에 사건을 덫을 놓는 경우에 문제를 통과하는 까 왜? 그냥 그들을 무시합니까 ??? – IbrarMumtaz

답변

3

마우스 메시지를 가로 채려면 WndProc()을 재정의해야합니다. 이와 같이 :

using System; 
using System.Windows.Forms; 

class MyBrowser : WebBrowser { 
    protected override void WndProc(ref Message m) { 
     if (m.Msg >= 0x200 && m.Msg <= 0x20a) { 
      // Handle mouse messages 
      //... 
     } 
     else base.WndProc(ref m); 
    } 
} 
+0

Windows 메시지 목록 (비 한정적인)은 다음에서 찾을 수 있습니다. http://www.autohotkey.com/docs/misc/SendMessageList.htm – Filip

3

거기에는 해결책이 있습니다. WebBrowser 컨트롤과 연결된 Document 객체와 연관된 마우스 이벤트를 캡처해야합니다.

DocumentCompleted 이벤트가, 그리고 내부 DocumentCompleted 이벤트 핸들러를 발생하면

는, 다음을 수행하십시오

myWebBrowser.Document.MouseDown += new HtmlElementEventHandler(myMouseDown); 

및 관련 핸들러가 있습니다

void myMouseDown(object sender, HtmlElementEventArgs e) 

{ 
    your code to handle the mouse event... such as ... 

      if (e.MouseButtonsPressed == MouseButtons.Right) 
      { 
      } 
} 
+0

오늘 하루를 저장했습니다. – yyoon

관련 문제