Csharp/C Sharp by API/System.Windows.Forms/IMessageFilter

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

extends IMessageFilter

<source lang="csharp">

using System; using System.Threading; using System.Windows.Forms;

public class BlockLeftMouseButtonMessageFilter : IMessageFilter {

   const int WM_LBUTTONDOWN = 0x201;
   
   public bool PreFilterMessage(ref Message m) {
       if(m.Msg == WM_LBUTTONDOWN)
       {
           Exception LeftButtonDownException;
           
           LeftButtonDownException = new Exception("The left mouse button was pressed.");
           Application.OnThreadException(LeftButtonDownException);
           return true;
       }
       return false;
   }

}

public class ApplicationEventHandlerClass {

   public void OnThreadException(object sender, ThreadExceptionEventArgs e)
   {
       Exception LeftButtonDownException;
       
       LeftButtonDownException = e.Exception;
       Console.WriteLine(LeftButtonDownException.Message);
   }

}

public class MainForm : Form {

   public static void Main()
   {
       ApplicationEventHandlerClass AppEvents = new ApplicationEventHandlerClass();
       MainForm MyForm = new MainForm();
       BlockLeftMouseButtonMessageFilter MsgFilter = new BlockLeftMouseButtonMessageFilter();
  
       Application.AddMessageFilter(MsgFilter);
       Application.ThreadException += new ThreadExceptionEventHandler(AppEvents.OnThreadException);
       Application.Run(MyForm);
   }
  
   public MainForm()
   {
       Text = "Application Exception Test";
   }

}

</source>