如何在控件上捕获所有鼠标事件?

时间:2010-08-12 20:39:34

标签: c# .net

我需要在.NET的WebBrowser上捕获所有鼠标事件,处理它们并阻止WebBrowser获取它们。有没有办法实现这个目标?我想知道如果控件被禁用,我是否可以处理鼠标事件。

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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)
            {
            }
}