Was ist der Unterschied zwischen Mauszeiger und Mauszeiger?

8

In einer C # -Windows-Anwendung gibt es zwei verschiedene Mausereignisse, MouseEnter und MouseHover , die beide ausgelöst werden, wenn sich der Cursor über dem Objekt befindet.

Was ist der Unterschied zwischen ihnen?

    
Zahema 15.12.2014, 21:03
quelle

2 Antworten

25

Angenommen, Sie befinden sich in Windows Forms:

Mouse Enter tritt auf:

  

Tritt auf, wenn der Mauszeiger in das Steuerelement eintritt.

( MSDN )

Mauszeiger:

  

Tritt auf, wenn der Mauszeiger auf dem Steuerelement ruht.

     

Eine typische Verwendung von MouseHover besteht darin, eine QuickInfo anzuzeigen, wenn die Maus gedrückt wird   Pausiert auf einem Steuerelement in einem bestimmten Bereich um das Steuerelement herum (der   "Hover-Rechteck"). Die für dieses Ereignis erforderliche Pause ist   angegeben in Millisekunden von der MouseHoverTime-Eigenschaft.

( MSDN )

Um MouseHoverTime global festzulegen ( nicht empfohlen , siehe @ IronMan84-Link hier für eine bessere Lösung), können Sie die Funktion SystemParametersInfo verwenden. Da dies ein Win32-API-Aufruf ist, benötigen Sie PInvoke:

%Vor%

Wird aufgerufen als:

%Vor%

Sigantures von PInvoke.NET: SystemParametersInfo , SPIF (Enum) , SPI (Enum)

Ich habe die Enum Signaturen hier nicht eingefügt, weil sie so verdammt lang sind. Verwenden Sie einfach die auf PInvoke.Net (oben verlinkt)

Weitere Informationen zum Aufruf der SystemParametersInfo-API und deren Parametern finden Sie unter MSDN .

    
BradleyDotNET 15.12.2014, 21:05
quelle
11

MouseEnter ist wenn deine Maus gerade in den Bereich geht.

MouseHover Dies ist der Fall, wenn Ihre Maus ein wenig dort bleibt (normalerweise für Tooltips verwendet).

Soweit Mausereignisse gehen, tritt das MouseEnter -Ereignis vor allen anderen auf. Außerdem können Sie manuell festlegen, wie lange die Maus über dem Bereich verweilen muss, bevor das Ereignis MouseHover ausgelöst wird. Sie können mehr dazu lesen hier .

EDIT: Ich habe den Link bei der Anpassung von MouseHoverTime geändert. Es stellt sich heraus, dass Sie es nicht leicht machen können, und dass es sehr zu empfehlen ist, dies nicht zu tun, da es sich um einen Systemwert handelt, der alle Anwendungen auf dem Computer betrifft. Stattdessen zeigt der neue Link, wie Sie eine neue anwendungsspezifische Variable manuell dazu verwenden können.

    
IronMan84 15.12.2014 21:05
quelle

Tags und Links