2010-08-12 67 views
0

我需要捕获.NET的WebBrowser上的所有鼠标事件,处理它们并阻止WebBrowser获取它们。有什么办法可以做到这一点?我想知道如果控件被禁用,是否有任何方法可以处理鼠标事件。如何捕获控件上的所有鼠标事件?

+0

如果您正在使用WPF,你可以打下透明画布放在WebBrowser控件的顶部,只需用Canvas捕捉所有事件即可...... Winforms是一个不同的故事。 – 2010-08-12 20:44:33

+0

重复? http://stackoverflow.com/questions/3268619/catching-a-contained-controls-mouse-events-in-a-usercontrol – 2010-08-12 21:42:02

+0

这读起来有点古怪,你会忽略它们吗?如果你没有真正的愿意和他们做任何事情,为什么要陷入困境?只是忽略他们? – IbrarMumtaz 2010-08-12 21:57:03

回答

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 2013-01-04 23:52:39

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 2015-07-31 01:32:44