Autor Beitrag
rijndael
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 23.10.07 10:30 
Hallo zusammen,
kann mir jemand sagen, wie ich die Position des Mauszeigers ermitteln kann.
Hintergrund ist der:
Ich habe ein UserControl, in dem sich Links eine Navigation befindet. Der Rechte Teil des Controls ist in eine obere und eine untere Hälfte mit jeweils einem UserControl geteilt und ich habe ein Mouse-Over Event auf dem unteren UserControl. Ich kann zwar die Position des Zeigers relativ zum UserControl Element ermitteln mit
ausblenden C#-Quelltext
1:
2:
3:
4:
void UCMouseMove(object sender, MouseEventArgs e)
    {
        e.GetPosition(this);
    }

rausfinden, das ist nur leider nicht die Stelle, an der sich die Maus gerade befindet. Meine erste Idee war, das Fenster, in dem mein Control geöffnet wird zu ermitteln. Das würde auch funktionieren, wäre aber sehr aufwendig, da muss es doch eine einfachere Methode geben

txh
rijn

Moderiert von user profile iconUGrohne: C#-Tags hinzugefügt.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 23.10.07 14:53 
Bringt Dich evtl. die TranslatePoint-Methode von UIElement weiter?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 23.10.07 15:04 
Ich verstehe die Frage nicht wirklich - selbst mit der Form-Instanz in der Hand kommt man doch nicht an absolute Windows-Koordinaten, oder :gruebel: ? Sow wie ich das sehe, bietet WPF überhaupt keinen Weg, an etwas Anderes als relative Koordinaten zu kommen - bevor man also mit Reflection oder P/Invoke anrückt, müsstest du uns erst einmal erklären, warum du diese imho sinnvolle Einschränkung überwinden willst ;) .
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 23.10.07 15:11 
UIElement kennt auch die Methode PointToScreen, sollte man damit nicht die absoluten Koordinaten bekommen?

Ich dachte, er wollte die Koordinaten relativ zum Fensterrand.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 23.10.07 15:30 
Gemein, warum ist die Methode bei MouseDevice protected und bei Visual public :oops: ? Die Frage nach dem Wozu ist aber auch für fenster-globale Koordinaten imho noch offen.
rijndael Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mi 24.10.07 19:44 
Dann werde ich das Problem mal weiter ausrollen, vielleicht habe ich ja einen Denkfehler:
Ich zeichen den den Verlauf mehrerer Funktion mit "Line"-Elementen. Beim "mit der Maus über die Line fahren" möchte ich gern ein kleines Fenster öffnen, das mit der rechten unteren Ecke an meinem Mauszeiger kleben bleibt und diverse Informationen gezeichneten Funktion liefert. Das ganze ist in dem schon beschriebenen UserControl "links unten" implementiert also so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
-------------------
|N |Header        |
|a |---------------
|v |    hier      |
|i |              |
|  |              |
-------------------


Wenn ich die Methode "e.GetPosition(this)" [this bezieht sich auf UserControl] aufrufe, dann fehlen mir die Anzahl der Pixel "Navi" für die Linke Position und die Pixel des Headers für die obere Position.

Ich habe auch schon angedacht, das ganze mit einem ToolTip zu bauen und dieses per Template so zu formatieren, wie ich es brauche, aber der ToolTip öffnet sich nicht schnell genug und bleibt auch nicht beständig offen und am Mauszeiger kleben.

Es gibt natürlich die Möglichkeit dass Host-Window zu ermittlen und die Breite der Navi bzw. des Header zu ermitteln (was ich mittlerweile auch mache), aber schön ist das nicht.

danke
rijn

Moderiert von user profile iconChristian S.: Code-Tags hinzugefügt