我在我的C# WinForm应用程序中遇到了鼠标事件问题。
我想获取应用程序中所有的鼠标点击,但我不想在每个子组件中放置一个监听器,也不想使用Windows鼠标钩子。
在Flash中,我可以在Stage上放置一个监听器来获取电影中的所有MouseEvents。
在C#中是否有这样的东西?全局MouseListener?
编辑:
我创建了这个类从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);