Autor Beitrag
Daffke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win XP
MS Visual C# 2005 Express Edition
BeitragVerfasst: Mi 18.04.07 14:25 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 18.04.07 14: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:
ausblenden C#-Quelltext
1:
label1.Text = Cursor.Position.X.ToString() + " / " + Cursor.Position.Y.ToString();					
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 18.04.07 18: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win XP
MS Visual C# 2005 Express Edition
BeitragVerfasst: Fr 27.04.07 15:34 
Titel: Schade.
Schade. Dann kann man da also nix machen :-(
Trotzdem: Vielen Dank für die schnelle Hilfe! :-)

Viele Grüße,
Daffke
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 28.04.07 09: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win XP
MS Visual C# 2005 Express Edition
BeitragVerfasst: Sa 28.04.07 10: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