Ich habe eine Methode, die einen Wert zurückgibt, und ich möchte, dass dieser Wert die neue Position einer Beschriftung in einer Windows Form-Anwendung ist. Aber mir wurde gesagt, dass die Position eines Etiketts keine Variable ist. objectA ist der Name des Etiketts.
objectA.Location.X = (int)A.position;
objectA.Refresh();
wie mache ich das?
Verwenden Sie die Eigenschaft Left
, um die X-Koordinate einer Label
zu ändern.
objectA.Left = 100;
die Location-Eigenschaft ist vom Typ Point, bei dem es sich um einen Werttyp handelt. Daher gibt die Eigenschaft eine Kopie des Positionswerts zurück, sodass das Festlegen von X für diese Kopie keine Auswirkungen auf die Beschriftung hat. Der Compiler erkennt dies und generiert einen Fehler, damit Sie ihn beheben können. Sie können das stattdessen tun:
objectA.Location = new Point((int)A.position, objectA.Location.Y);
(Der Aufruf zum Aktualisieren ist nutzlos)
Das funktioniert bei mir
this.label1.Location = new Point(10, 10);
Sie müssen nicht einmal Refresh oder SuspendLayout usw. aufrufen.
das sollte dir also helfen
this.label1.Location = new Point((int)A.position, (int)A.otherpos);
objectname.Location = System.Drawing.Point (100,100);
objectA.Location = new Point((int)A.position, objectA.Location.Y);
objectA.Refresh();
Ort ist keine Variable, nur eine öffentliche Eigenschaft. Das Ändern von Variablen über Eigenschaften ist eine schlechte Idee, es sei denn, Sie haben Ereignisse, die das übergeordnete Element aktualisieren.
Sie können die Eigenschaften von Strukturen nur festlegen, wenn Sie einen direkten Verweis auf diese Struktur haben:
Point loc = objectA.Location;
loc.X = (int)A.position;
objectA.Location = loc;