public class F1MessageFilter : IMessageFilter { // constructeur, on lui passe le form qui sera concerné par les actions public F1MessageFilter(Form form) { this.form = form; } private const int WM_KEYDOWN = 0x0100; private Form form; public bool PreFilterMessage(ref Message m) { // si le message est une pression sur touche et que la touche est F1if ( m.Msg WM_KEYDOWN && m.WParam (IntPtr)Keys.F1 ) { // si le message est destiné a notre form ou un controle qu'il contient, on le fermeif ( m.HWnd form.Handle || form.Contains(Control.FromHandle(m.HWnd)) true ) { MessageBox.Show("F1 pressé !\nLe controle qui avait le focus est : "+Control.FromHandle(m.HWnd).Name); //Lancement de mon traitement //........... // blocage du message return true; } } // le message n'etait pas celui qu'on attendais, on le laisse passer return false; } }
private F1MessageFilter f1_mf; public CodeLibelle(TableCodeLib table) { InitializeComponent(); f1_mf = new F1MessageFilter(this); Application.AddMessageFilter(f1_mf); } private void CodeLibelle_Closing(object sender, System.ComponentModel.CancelEventArgs e) { // suppression du messagefilter Application.RemoveMessageFilter(f1_mf); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question