社区
C#
帖子详情
如何在C#中捕捉鼠标事件
pijh
2003-02-13 11:33:46
如何在C#中捕捉鼠标事件
...全文
124
2
打赏
收藏
如何在C#中捕捉鼠标事件
如何在C#中捕捉鼠标事件
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sarmoo
2003-02-17
打赏
举报
回复
转:
一个微软工程师在CSDN的回答。
-----------------------------
的确有很多开发人员问过同样的问题,就是“WinForm中,键盘事件可以通过Form.KeyPreview捕捉,那么鼠标事件有没有Form.MousePreview?”。首先,直接的答案是没有。但是,另外有一些效果类似的解决方法,比如可以在Form_Load的时候遍历所有的Form.Controls,为每一个Control添加同一个鼠标处理函数。
另外一个方法是使用Mouse Hook。您可以在WinForm程序中添加如下的代码:
[DllImport( "kernel32 ")]
public static extern int GetCurrentThreadId();
[DllImport( "user32 ", CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(HookType idHook,HOOKPROC lpfn,int hmod,int dwThreadId);
public enum HookType{
WH_MOUSE = 7
}
public delegate int HOOKPROC(int nCode, int wParam, int lParam);
public void SetHook(HOOKPROC callbackProc){
SetWindowsHookEx(HookType.WH_MOUSE,callbackProc,0,GetCurrentThreadId());
}
private void Form1_Load(object sender, System.EventArgs e){
SetHook(new HOOKPROC(this.MyMouseProc));
}
public int MyMouseProc(int nCode, int wParam, int lParam){
if(nCode==0 && wParam==514){ //if left button down.
MessageBox.Show( "Mouse left button clicked. LParam= "+lParam);
}
return 0; //return 1 to trap the mouse event
}
这样就可以在子控件处理鼠标事件之前截获并处理之。不过,一般不推荐这样做,因为可能出现一些不稳定的情况。
sarmoo
2003-02-13
打赏
举报
回复
实现IMessageFilter接口,然后判断消息是否为鼠标操作,进行处理。
C#
鼠标钩子 监测鼠标双击事件
鼠标钩子,监测鼠标双击事件。VS2012 打开可直接运行
C#处理鼠标和键盘事件
C#处理鼠标和键盘事件C#处理鼠标和键C#处理鼠标和键盘事件盘事件
C#
在 WebBrowse控件
中
捕获 MouseClick 或 MouseDown事件
在
C#
的WebBrowse控件
中
捕获 MouseClick 或 MouseDown事件的方法。
C#
Hock 全局监听程序外的键盘和鼠标的事件
c#
hook钩子实现全局的鼠标点击可监听程序外的事件,单击,双击,滚轮,按键事件的触发,键盘按键的全局监听,鼠标的监听,程序可直接运行,供大家测试
winform键盘和
鼠标事件
的
捕捉
与重写(快捷键)
winform键盘输入事件和鼠标滚轮事件的
捕捉
与重写
C#
111,116
社区成员
642,552
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章