我的WinForm C#应用程序上的MouseEvents有问题.
我想在我的应用程序上点击所有鼠标,但我不想在每个子组件中都放置一个监听器,也不要使用Windows鼠标钩子.
在Flash上我可以在Stage上放置一个监听器来获取电影上的所有MouseEvent.
C#上有这样的东西吗?全局MouseListener?
编辑:
我从IMessageFilter ans使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
并将此代码放在需要监听全局点击的控件上:
GlobalMouseHandler globalClick = new GlobalMouseHandler();
Application.AddMessageFilter(globalClick);
Run Code Online (Sandbox Code Playgroud)