Ich muss erkennen, wenn der Benutzer die Maus über das Formular und alle seine untergeordneten Steuerelemente bewegt und auch wenn es das Formular verlässt. Ich versuchte, die MouseEnter
und MouseLeave
Ereignisse des Formulars, ich versuchte, die WM_MOUSEMOVE
& WM_MOUSELEAVE
und WM_NCMOUSEMOVE
& WM_NCMOUSELEAVE
Paare von Windows-Meldungen, aber keine scheinen zu arbeiten, wie ich will ...Wie erkennen Sie, ob sich die Maus innerhalb des gesamten Formulars und der untergeordneten Steuerelemente befindet?
Die meisten meiner Form von Kind Kontrollen besetzt ist von Viele Arten, es ist nicht viel Client-Bereich sichtbar. Dies bedeutet, dass wenn ich die Maus sehr schnell bewege, die Mausbewegung nicht erkannt wird, obwohl sich die Maus in der Form befindet.
Zum Beispiel habe ich eine TextBox, die an der Unterseite und zwischen dem Desktop und der TextBox angedockt ist, gibt es nur eine sehr kleine Grenze. Wenn ich die Maus schnell von unten nach oben in die TextBox verschiebe, wird die Mausbewegung nicht erkannt, aber die Maus befindet sich innerhalb der TextBox, also innerhalb des Formulars.
Wie kann ich erreichen, was ich brauche?
, dass nur sie die andere Art und Weise macht arbeiten ... ich meine, jetzt erkennt es, wenn die Maus über das Formular ist Kind steuert, aber nicht das Formular selbst. Ich möchte das Ganze erkennen. Ich muss auch erkennen, wann die Maus das Formular eingegeben hat und wann es gegangen ist, nicht nur, dass es sich innerhalb des Formulars bewegt. –
Nun, ich fand genau das, was ich in diesem Beispiel gesucht habe: http://netcode.ru/dotnet/?lang=&katID=30&skatID=283&artID=7862. Es verwendet das gleiche Prinzip wie Ihre Antwort, der IMessageFilter. Und es ermöglicht mir zu erkennen, wann die Maus das Formular betritt und verlässt. Ich muss mich einfach anpassen und den Code so streichen, wie ich möchte. Wie auch immer, wenn Sie Ihre Antwort auf dem IMessageFilter ausarbeiten können, was es ist, wie es funktioniert und all das, werde ich diese Antwort als die akzeptierte markieren. Und bitte fügen Sie eine Notiz hinzu, um die Kommentare für andere Leute zu überprüfen, die nach einer Lösung für genau das gleiche Problem suchen. –
Haben Sie meine Anfrage TcKS überhaupt gesehen? Vielleicht machst du diese Zeit ... Könntest du bitte deinen Beitrag bearbeiten und ein wenig über das ganze IMessageFilter-Ding und wie es funktioniert? –