Ich habe ein Problem mit MouseEvents auf meiner WinForm C# -Anwendung. Ich möchte alle Mausklicks auf meine Anwendung bekommen, aber ich möchte nicht in jeder untergeordneten Komponente einen Listener setzen, weder Windows-Maus-Hook verwenden.Erfassen von Mausereignissen aus jeder Komponente in C# WinForm
Auf Flash konnte ich einen Listener auf Stage setzen, um alle MouseEvents auf dem Film zu erhalten. Gibt es so etwas auf C#? Ein globaler MouseListener?
Edit: Ich schaffe diese Klasse von IMessageFilter ans verwendet Application.AddMessageFilter.
public class GlobalMouseHandler : IMessageFilter{
private const int WM_LBUTTONDOWN = 0x201;
public bool PreFilterMessage(ref Message m){
if (m.Msg == WM_LBUTTONDOWN) {
// Do stuffs
}
return false;
}
}
Und diesen Code auf die Kontrollen stellen die globale Klicks hören müssen:
GlobalMouseHandler globalClick = new GlobalMouseHandler();
Application.AddMessageFilter(globalClick);
Vielen Dank für die Hilfe!
Vielen Dank für die Hilfe! Alles funktioniert gut. Ich habe Application.AddMessageFilter mit suscess. Ich haken die Mausereignisse und erstellen einen C# MouseEventHandler, um das Ereignis auf WinForm-Ebene an andere Steuerelemente zu senden. –