Laden...

Window.IsMouseOver ist false beim WebBrowserControl

Erstellt von MrSparkle vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.493 Views
MrSparkle Themenstarter:in
5.657 Beiträge seit 2006
vor 7 Jahren
Window.IsMouseOver ist false beim WebBrowserControl

Hallo allerseits,

ich habe ein WPF-Window mit einem Style, der einen Trigger auf Window.IsMouseOver enthält. In dem Fenster befindet sich ein WebBrowser-Control.

MSDN sagt dazu:

Gets a value indicating whether the mouse pointer is located over this element (including child elements in the visual tree).

Wenn sich die Mouse allerdings über dem WebBrowser-Control befindet, wird Window.IsMouseOver auf false gesetzt. Bei allen anderen Controls im Fenster funktioniert es wie in der Doku beschrieben. Der WebBrowser scheint da etwas "speziell" zu sein.

Wie kann ich nun erreichen, daß Window.IsMouseOver auch true ist, wenn sich die Mouse über dem WebBrowser-Control befindet?

Weeks of programming can save you hours of planning

771 Beiträge seit 2009
vor 7 Jahren

Beim WPF WebBrowser funktionieren wohl generell die mouse events nicht (direkt): WPF WebBrowser Mouse Events not working as expected
Evtl. hilft onmouseover selbst auszuwerten?

MrSparkle Themenstarter:in
5.657 Beiträge seit 2006
vor 7 Jahren

Hi Cat,

danke für deine Antwort. Über den StackOverflow-Artikel bin ich bei meinen Recherchen auch schon gestolpert. Demnach kann man die Mouse-Events so abfangen:


mshtml.HTMLDocumentEvents2_Event doc = ((mshtml.HTMLDocumentEvents2_Event)Browser.Document);
doc.onmouseover += new mshtml.HTMLDocumentEvents2_onmouseoverEventHandler(doc_onmouseover);

Bei mir wurde das Event aber auch nicht ausgelöst. Und abgesehen davon wäre es schon sehr umständlich, diesen Weg zu gehen, anstatt einfach einen Trigger auf Window.IsMouseOver zu setzen. Insgesamt glaube ich, die beste Idee ist, auf das WebBrowserControl zu verzichten, und ein anderes Control dafür zu verwenden...

Weeks of programming can save you hours of planning

3.170 Beiträge seit 2006
vor 7 Jahren

Hallo,

also das Ereignis von HTMLDocumentEvents2_Event wird schon ausgelöst (jedenfalls bei mir) - allerdings nur dann, wenn auch schon ein Dokument geladen ist.

Trotzdem ist es schwierig, damit zu hantieren - man bekommt das Ereignis nämlich für alle möglichen Elemente des HTML-Dokuments, und man bräuchte auch noch onmouseout um festzustellen, wann das Control (oder vielmehr das Dokument) wieder verlassen wird.
Dazu kann man eigentlich nur die Property srcElement zurateziehen - das ist aber Mist, weil man MouseOut-Ereignisse auch für Elternelemente bekommt, wenn man über ein geschachteltes Element fährt, man kann also nie sagen, ob man das srcElement nach aussen oder intern "verlassen" hat.
Ansonsten fällt mir nur noch ein, über die Mauskoordinaten zu gehen. Dann wird's aber auch ein Hickhack 😦 😦

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

212 Beiträge seit 2008
vor 7 Jahren

Insgesamt glaube ich, die beste Idee ist, auf das WebBrowserControl zu verzichten, und ein anderes Control dafür zu verwenden...

Ich hatte damals das Problem das Javascript nicht richtig ausgeführt wurde. Ich meine das war davon abhängig welche Browser Version installiert war. Das ist bei dem WebbrowserControl auch so eine Sache, wer weis schon wie sich eine neue Version vom Internet Explorer auf das Programm auswirkt? Ich habe mir damals Awesomium installiert. Das Control funktioniert super und man ist frei von Udates. Vielleicht kommt das ja für dich in Frage.

Gruß
Christoph