我的 WinForm C# 应用程序上的 MouseEvents 有问题。
我想在我的应用程序上获得所有鼠标点击,但我不想在每个子组件中都放置一个侦听器,也不使用 Windows 鼠标钩子。
在 Flash 上,我可以在舞台上放置一个侦听器来获取电影中的所有 MouseEvent。
C#上有这样的东西吗?一个全局鼠标监听器?
编辑:
我从 IMessageFilter 和使用的 Application.AddMessageFilter 创建这个类。
public class GlobalMouseHandler : IMessageFilter{
private const int WM_LBUTTONDOWN = 0x201;
public bool PreFilterMessage(ref Message m){
if (m.Msg == WM_LBUTTONDOWN) {
// Do stuffs
}
return false;
}
}
并将这段代码放在需要监听全局点击的控件上:
GlobalMouseHandler globalClick = new GlobalMouseHandler();
Application.AddMessageFilter(globalClick);