C#应用程序范围的鼠标左键单击事件

Spi*_*n50 3 c# winforms

我想在我的表单中的任何地方单击鼠标左键时播放声音,而不必在表单中的每个控件上放置鼠标单击事件.有没有办法实现这个目标?

Han*_*ant 7

您可以在将Windows通知发送到具有IMessageFilter接口焦点的控件之前检测它.使它看起来类似于:

public partial class Form1 : Form, IMessageFilter {
    public Form1() {
        InitializeComponent();
        Application.AddMessageFilter(this);
        this.FormClosed += delegate { Application.RemoveMessageFilter(this); };
    }

    public bool PreFilterMessage(ref Message m) {
        // Trap WM_LBUTTONDOWN
        if (m.Msg == 0x201) {
            System.Diagnostics.Debug.WriteLine("BEEP!");
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这适用于项目中的任何表单,而不仅仅是主要表单.