Ich habe eine Form-Unterklasse mit Handlern für MouseHover
und MouseLeave
. Wenn sich der Zeiger auf dem Hintergrund des Fensters befindet, funktionieren die Ereignisse gut, aber wenn der Zeiger auf ein Steuerelement innerhalb des Fensters verschoben wird, verursacht es ein MouseLeave
-Ereignis.
Gibt es überhaupt eine Veranstaltung, die das ganze Fenster abdeckt?
(.NET 2.0, Visual Studio 2005, Windows XP)
Wenn das Maus-Verlassen-Ereignis ausgelöst wird, besteht eine Option darin, nach der aktuellen Position des Zeigers zu suchen und zu sehen, ob er innerhalb des Formularbereichs liegt. Ich bin mir nicht sicher, ob eine bessere Option verfügbar ist.
Bearbeiten: Wir haben eine ähnliche Frage, die für Sie von Interesse sein könnte. Wie erkennt man, ob sich die Maus innerhalb des gesamten Formulars und untergeordneten Steuerelementen in C # befindet?
Es gibt keine gute Möglichkeit, MouseLeave für eine Containersteuerung zuverlässig zu machen. Zünden Sie dieses Problem mit einem Timer:
%Vor%Erstellen Sie auf Ihrem Benutzer-Steuerelement ein mousehover Event für Ihr Steuerelement wie dieses (oder einen anderen Ereignistyp) wie dieses
%Vor%Auf Ihrem WinForm, das das UserControl hostet, haben Sie dies für das UserControl, um den MouseOver zu behandeln, also platzieren Sie das in Ihrem Designer.cs
%Vor%Was diese Methode auf Ihrem WinForm aufruft
%Vor%Wo ThumbImage der Typ von usercontrol
istTags und Links c# winforms events mousehover mouseleave