您好,登錄后才能下訂單哦!
小編給大家分享一下C#怎么實現鼠標消息捕獲,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
在C#中怎樣禁用鼠標按鍵,我們可以通過ImessageFilter接口下的PreFilterMessage方法、Application類的AddMessageFilter方法,RemoveMessageFilter方法和Message結構的Msg屬性來禁用鼠標左鍵。Message結構包裝Windows發送的消息,可使用該結構包裝消息,并將其分配給窗口過程以進行調度,還可以使用該結構獲取系統向應用程序或控件發送的關于某個消息的信息。
使用PreFilterMessage方法在調度消息之前將其篩選出來。語法格式如下:
Bool PreFilterMessage(ref Message m)
參數說明:
m:要調度的消息,無法修改此消息。
返回值:如果篩選消息并禁止消息被調度,則為True;如果允許消息繼續到達下一個篩選器或控件,則為False。使用AddMessageFilter方法添加消息篩選器以便在向目標傳送Windows消息時監視這些消息。使RemoveMessageFilter 從應用程序的消息泵移除一個消息篩選器。
界面:
代碼實現:
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; } } /// <summary> /// 窗體加載 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmMain_Load(object sender, EventArgs e) { InitComboBox(); } /// <summary> /// 初始化ComboBox /// </summary> private void InitComboBox() { Dictionary<int, string> dictGrade = new Dictionary<int, string>(); 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"; } /// <summary> /// 索引改變事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> 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(); } /// <summary> /// 實現方法 /// </summary> /// <param name="m"></param> /// <returns></returns> public bool PreFilterMessage(ref Message m) { //不響應鼠標右鍵 if (m.Msg >= 516 && m.Msg <= 517) { return true; } else { return false; } } /// <summary> /// 禁用鼠標右鍵 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { //添加消息 Application.AddMessageFilter(this); MessageBox.Show("鼠標右鍵已被禁止使用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } /// <summary> /// 解決禁用鼠標右鍵 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> 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#怎么實現鼠標消息捕獲”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。