C# Application-Wide Left Mouse Click Event

后端 未结 4 2144
春和景丽
春和景丽 2020-12-19 19:27

I want to play a sound when the left mouse button is clicked anywhere in my form without having to place Mouse click events on every single control in the form. Is there a w

4条回答
  •  感动是毒
    2020-12-19 20:22

    You can detect the Windows notification before it is dispatched to the control with the focus with the IMessageFilter interface. Make it look similar to this:

    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;
        }
    }
    

    This works for any form in your project, not just the main one.

提交回复
热议问题