Laden...

MouseLeave Event wird nicht zuverlässig geworfen

Erstellt von Mallett vor 4 Jahren Letzter Beitrag vor 4 Jahren 878 Views
M
Mallett Themenstarter:in
171 Beiträge seit 2012
vor 4 Jahren
MouseLeave Event wird nicht zuverlässig geworfen

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.

T
461 Beiträge seit 2013
vor 4 Jahren

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... 😄