Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
MouseLeave Event wird nicht zuverlässig geworfen
Mallett
myCSharp.de - Member



Dabei seit:
Beiträge: 176

Themenstarter:

MouseLeave Event wird nicht zuverlässig geworfen

beantworten | zitieren | melden

Hallo zusammen,

ich habe ein borderless Fenster, beim MouseEnter wird die Maus an ein Control innerhalb des Fensters gecaptured, beim MouseLeave soll das Capture gelöst werden.

Das funktioniert auch soweit, es sei denn, man bewegt die Maus schnell, bzw. ruckartig aus dem Fenster raus. Dann wird das MouseLeave Event nicht geworfen.

Ich habe diesen alten Thread hier im Forum gefunden:
MouseLeave Event wird nicht zuverlässig ausgelöst

Dort wird dies als allgemeines Problem beschrieben und vorgeschlagen, einen Timer zu verwenden, der regelmäßig prüft, ob die Maus noch über dem Fenster ist.

Ich habe genau das versucht, und dabei in dem Timer.Tick Handler geprüft, ob die Properties IsMouseOver und IsMouseDirectlyOver noch gesetzt sind.

Zu meiner Überraschung ändern sich aber auch die Werte dieser Properties nicht, wenn die Maus ruckartig aus dem Fenster gezogen wird. IsMouseOver bleibt dann permanent auf true, bis ich einmal außerhalb des Fensters klicke.

Daher meine Frage: Worauf könnte ich im Timer.Tick Handler noch prüfen, um festzustellen, dass die Maus nicht mehr über dem Fenster ist? Muss ich wirklich Mauskoordinaten holen und diese mit der Fensterposition vergleichen? Kann doch eigentlich nicht wahr sein, oder?

Danke schonmal.
private Nachricht | Beiträge des Benutzers
ThomasE.
myCSharp.de - Member



Dabei seit:
Beiträge: 453

beantworten | zitieren | melden

Hallo,

zuerst die Frage, ist es nun WPF oder WinForms? Deine Verlinkung war WinForms gemeint.

Danach, was soll überhaupt gemacht werden?

Ein Fenster ohne Standard-Windows Rahmen, welches man auch noch eine Transparenz verpassen kann?

Ist deine eigentliche Frage, wie man so ein Fenster überhaupt verschieben kann?
Wenn dem so ist, dann gibt es schon eine fertige Funktion unter WPF: DragMove

Ansonsten bitte ein bisschen Code damit man sich ein Bild machen kann...

SG Thomas
Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen...
private Nachricht | Beiträge des Benutzers