web-dev-qa-db-fra.com

Mettre à jour l'emplacement de l'étiquette en C #?

J'ai une méthode qui renvoie une valeur et je veux que cette valeur soit le nouvel emplacement d'une étiquette dans une application de formulaire Windows. mais on me dit que l'emplacement d'une étiquette n'est pas une variable. objectA est le nom de l'étiquette.

objectA.Location.X = (int)A.position;
objectA.Refresh();

comment puis-je faire cela?

13
avaleske

Utilisez la propriété Left pour modifier la coordonnée X d'une Label

objectA.Left = 100;
17
Julien Poulin

la propriété Location est de type Point, qui est un type de valeur. Par conséquent, la propriété renvoie une copie de la valeur d'emplacement. Par conséquent, définir X sur cette copie n'aurait aucun effet sur l'étiquette. Le compilateur voit cela et génère une erreur afin que vous puissiez le réparer. Vous pouvez le faire à la place:

objectA.Location = new Point((int)A.position, objectA.Location.Y);

(l'appel à rafraîchir est inutile)

19
Thomas Levesque

Ça marche pour moi

this.label1.Location = new Point(10, 10);

Vous n'avez même pas besoin d'appeler Refresh ou SuspendLayout etc.

alors cela devrait vous aider

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();

L'emplacement n'est pas une variable, mais une propriété publique. Changer les variables via les propriétés est une mauvaise idée à moins que des événements mettent à jour le parent.

0
Alin Vasile

Vous ne pouvez définir les propriétés des structures que si vous avez une référence directe à cette structure:

Point loc = objectA.Location;
loc.X = (int)A.position;
objectA.Location = loc;
0
Miguel Angelo