[C#] Position der Form auslesen

Cäptin Pommes

Erfahrenes Mitglied
Hallo,

Ich versuche gerade die Position des Fensters aus zulesen
und habe es mit

Code:
label1.Text = Convert.ToString(this.Left);

versucht. Aber das funktioniert leider nicht. Kann mir da einer helfen?
 
Hallo,

probier mal das

C++:
this.label1.Text = this.Location.X.ToString() + ", " + this.Location.Y.ToString();
 
Hab eben mal rumprobiert

Im normalen Konstruktor der Form gehts nicht, ich vermute da wendest du das an.

Du musst stattdessen das Shown Event der Form nutzen
(wird ausgelöst, wenn die Form fertig gezeichnet ist)

C++:
private void Form1_Shown(object sender, EventArgs e)
{
   this.textBox1.Text = this.Location.X.ToString() + ", " + this.Location.Y.ToString();
}
 
Im *normalen* Konstruktor -- (ich hab gar net gewusst das es auch einen abnormalen Konstruktor gibt ;-) )
kannst du die X, Y Position deines Fensters natürlich abfragen.
Sofern du es nach InitializeComponent gemacht und die Eigenschaft : StartPosition im Form auf Manual gesetzt hast.
(du kannst sie auch so abfragen, nur anzeigen wird er die Form nicht dort wo du es möchtest ;-)

Der Grund dafür warum du 0,0 rausbekommst ist, das du vermutlich in der Eigenschaft: Location deiner Windows - Form (nehm ich mal an) 0,0 eingetragen bzw. default - mäßig drinn stehen hast.
Na dann ist klar das du auch 0,0 rausbekommst.
Änder mal im Konstruktor (nach InitializeComponent ;) )die Location und frage sie im Form_Load ab. ;)

Ich nehm mal an du willst dein Label an irgendeinem Punkt deiner Form ausrichten.
Also ist die Windows Form der Container für dein Label.
Wenn du this.Left abfragst erhälts du die Distanz in Pixel vom linken Bildschirmrand zum Linken Rand der Form.
 
Zuletzt bearbeitet:
Mit normalem Konstruktor meinte ich den Standardkonstruktor, weiß der Teufel ob er sich mal nen eigenen mit irgendwelchen Parametern mal schreibt. ;-)

Bei der Startposition, weiß ich nicht, was er eingestellt hat.
Irgendeine Location Änderung im Konstruktor braucht er nicht.

Form_Load und Form_Shown haben jeweils den selben Effekt.
damit funktioniert es.

Voreingestellte Änderungen der Startposition sind meiner Meinung nach nicht nötig.
 
@Turri
Jo, klar.. aber mit this.Left wird er nicht weit springen ;)
Ich nehm mal stark an das er das Label an eine bestimmte Position innerhalb der Form setzen möchte.. tjaa aber das muss uns der Meister selbst verraten :)

@Avorin
Jesss OnPaint.. sicher net schlecht.. aber da muss man auch vorsichtig sein.
Wenn man bedenkt wie oft OnPaint aufgerufen wird... :D .. man sollte sich da einfach mal reinlesen , so als tipp für den Threadersteller.. ;)
 
Das Label is nur vorläufig da einfach nur damit ich das erstmal sehe die Position des Fenstern brauch ich um die Position einer PictrueBox die meiner Maus folgen soll richtig zu berechnen das heisst sobald er während der Laufzeit das Fenster verschiebt brauch ich wieder die aktuellen werte, heisst das also ich muss dafür die OnPaint() finction nehm?
 
Zurück