webentwicklung-frage-antwort-db.com.de

Aktualisieren der Etikettenposition in C #?

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?

13
avaleske

Verwenden Sie die Eigenschaft Left, um die X-Koordinate einer Label zu ändern.

objectA.Left = 100;
17
Julien Poulin

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)

19
Thomas Levesque

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);
8
RomanT

objectname.Location = System.Drawing.Point (100,100);

1
Alynuzzu
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.

0
Alin Vasile

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;
0
Miguel Angelo