Entwickler-Ecke

C# - Die Sprache - OnMouseMove - Problematik


Daffke - Mi 18.04.07 13:25
Titel: OnMouseMove - Problematik
Hallo!

Ich bin in Sachen "C#-Programmierung" ein absoluter Neuling. Jetzt habe ich mich mal mit der Maus beschäftigt ;-)
Ein kleines Fenster sollte mir die Position des Mauszeigers angeben:


C#-Quelltext
1:
2:
3:
4:
       protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
        {
            this.label1.Text = "Position: " + e.X + "/" + e.Y;
        }


Das funktioniert auch ganz prima. Aber sobald ich mit dem Mauspfeil das Fenster verlasse, wird die aktuelle Position nicht mehr angezeigt.

Meine Frage an Euch: Wie kann ich die Position des Mauszeigers anzeigen lassen, (auch) wenn ich das Fenster verlasse? Bezieht sich OnMouseMove immer nur auf das aktive Fenster?

Wäre super, wenn ihr einem Anfänger weiterhelfen könntet...

Viele Grüße,
Daffke

Moderiert von user profile iconUGrohne: Beitragsformatierung überarbeitet (Es muss nicht alles fett sein!).


UGrohne - Mi 18.04.07 13:33

Ja, OnMouseMove wird nur für das definierte Objekt aufgerufen. Es gibt beispielsweise dieses Ereignis auch für ein Panel. Und die Angaben beziehen sich immer relativ zum Objekt, also 0/0 ist immer die linke obere Ecke des Objekts, z.B. des Panels.

Was Du machen willst, musst Du selbst abfragen, dafür bekommt Deine Anwendung keine Message von Windows, jedenfalls solange sich der Mauszeiger nicht über Deiner Form befindet.

Du kannst z.B. einen Timer nehmen und dort regelmäßig die aktuelle Position des Cursors herausfinden:

C#-Quelltext
1:
label1.Text = Cursor.Position.X.ToString() + " / " + Cursor.Position.Y.ToString();                    


Kha - Mi 18.04.07 17:27

Auf CodeProject.com gibt es eine MouseHook-Klasse für .Net, aber als Neuling fährst du mit einem Timer sicherlich besser. Die minimale Zeitverzögerung sollte nicht sichtbar sein.


Daffke - Fr 27.04.07 14:34
Titel: Schade.
Schade. Dann kann man da also nix machen :-(
Trotzdem: Vielen Dank für die schnelle Hilfe! :-)

Viele Grüße,
Daffke


UGrohne - Sa 28.04.07 08:59
Titel: Re: Schade.
user profile iconDaffke hat folgendes geschrieben:
Schade. Dann kann man da also nix machen :-(
Trotzdem: Vielen Dank für die schnelle Hilfe! :-)

Wir haben Dir doch 2 Lösungsmöglichkeiten aufgezeit? :gruebel:


Daffke - Sa 28.04.07 09:19

Nee, klar. Der Tipp war schon ganz gut. Ich hab' mich nur falsch ausgedrückt. Sorry.
Ich konnte es leider nicht so umsetzen, wie ich es erst dachte ...

Aber Eure Hilfe war schon 1A!
Danke nochmal! :-)

Gruß,
Daffke