C#怎么实现鼠标消息捕获
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,小编给大家分享一下C#怎么实现鼠标消息捕获,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterM
千家信息网最后更新 2026年10月31日C#怎么实现鼠标消息捕获
小编给大家分享一下C#怎么实现鼠标消息捕获,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterMessage方法、Application类的AddMessageFilter方法,RemoveMessageFilter方法和Message结构的Msg属性来禁用鼠标左键。Message结构包装Windows发送的消息,可使用该结构包装消息,并将其分配给窗口过程以进行调度,还可以使用该结构获取系统向应用程序或控件发送的关于某个消息的信息。
使用PreFilterMessage方法在调度消息之前将其筛选出来。语法格式如下:
Bool PreFilterMessage(ref Message m)
参数说明:
m:要调度的消息,无法修改此消息。
返回值:如果筛选消息并禁止消息被调度,则为True;如果允许消息继续到达下一个筛选器或控件,则为False。使用AddMessageFilter方法添加消息筛选器以便在向目标传送Windows消息时监视这些消息。使RemoveMessageFilter 从应用程序的消息泵移除一个消息筛选器。
示例一:在ComboBox选择值的时候,选择的值会随鼠标滚轮的滑动而改变,有时候不小心滑动了滑轮,导致选择的值改变,在下面的示例中,通过禁用鼠标滚轮,防止鼠标滚轮的滑动改变ComboBox选择的值。
界面:
代码实现:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace MouseDemo{ public partial class FrmMain : Form,IMessageFilter { public FrmMain() { InitializeComponent(); } public bool PreFilterMessage(ref Message m) { if (m.Msg == 522) { return true; } else { return false; } } /// /// 窗体加载 /// /// /// private void FrmMain_Load(object sender, EventArgs e) { InitComboBox(); } /// /// 初始化ComboBox /// private void InitComboBox() { Dictionary dictGrade = new Dictionary(); dictGrade.Add(1, "一年级"); dictGrade.Add(2, "二年级"); dictGrade.Add(3, "三年级"); dictGrade.Add(4, "四年级"); dictGrade.Add(5, "五年级"); dictGrade.Add(6, "六年级"); BindingSource dataSource = new BindingSource(); dataSource.DataSource = dictGrade; cmb_Grade.DataSource = dataSource; cmb_Grade.DisplayMember = "Value"; cmb_Grade.ValueMember = "Key"; } /// /// 索引改变事件 /// /// /// private void cmb_Grade_SelectedIndexChanged(object sender, EventArgs e) { //添加消息过滤 Application.AddMessageFilter(this); } }} 示例二:窗体设置右键控件,演示禁用和解除禁用右键功能,右键菜单只有复制、剪切、粘贴三项
界面:
代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace MouseRightDemo{ public partial class FrmMouseRight : Form ,IMessageFilter { public FrmMouseRight() { InitializeComponent(); } /// /// 实现方法 /// /// /// public bool PreFilterMessage(ref Message m) { //不响应鼠标右键 if (m.Msg >= 516 && m.Msg <= 517) { return true; } else { return false; } } /// /// 禁用鼠标右键 /// /// /// private void button1_Click(object sender, EventArgs e) { //添加消息 Application.AddMessageFilter(this); MessageBox.Show("鼠标右键已被禁止使用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } /// /// 解决禁用鼠标右键 /// /// /// private void button2_Click(object sender, EventArgs e) { //移除消息 Application.RemoveMessageFilter(this); MessageBox.Show("鼠标右键已被解除禁止使用,可以使用鼠标右键", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }}鼠标动作常见参数:
鼠标移动:512
鼠标左键:
down:513 up:514
double click:515
鼠标右键:
down:516 up:517
鼠标滚轮:522
看完了这篇文章,相信你对"C#怎么实现鼠标消息捕获"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
消息
鼠标
年级
方法
滚轮
结构
调度
选择
C#
控件
示例
筛选器
代码
参数
应用程序
界面
程序
窗体
篇文章
包装
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司排名
高科技互联网
云信互联网科技有限公司
互联网科技行业发展
互联网科技未来
平安科技 互联网
撒么互联网科技公司
佩信高科技互联网
科技互联网的估值
互联网系的金融科技公司
互联网金融中的现代科技
厦门千工互联网科技有限公司
想开互联网科技公司怎么样
互联网科技公司营业执照怎么办理
国大互联网教育科技有限公司薪资
互联网领先科技宣传片
陕西云淼互联网科技公司
唐山双旺合互联网科技产业园
互联网大会出现的黑科技
现代科技的标志之一的互联网
易互联网科技有限公司
致骋互联网科技
汉立互联网科技有限公司联系电话
字节跳动和互联网科技
常德市电业局互联网科技部
阿里互联网科技公司
汽车互联网创新科技园
洛阳共同富裕互联网科技有限公司
互联网科技平台产品运营
现代互联网科技公司