MouseHover / MouseLeave-Ereignis für das gesamte Fenster

7

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)

    
billpg 06.01.2010, 18:01
quelle

4 Antworten

6

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?

    
Shoban 06.01.2010, 18:18
quelle
8

Vermeiden Sie, dass das MouseLeave-Ereignis nicht ausgelöst wird, solange die Maus ein untergeordnetes Steuerelement betritt

%Vor%     
Ryan 30.08.2012 14:36
quelle
5

Es gibt keine gute Möglichkeit, MouseLeave für eine Containersteuerung zuverlässig zu machen. Zünden Sie dieses Problem mit einem Timer:

%Vor%     
Hans Passant 06.01.2010 18:17
quelle
0

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

ist     
fkerrigan 08.04.2011 19:19
quelle