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?
Utilisez la propriété Left
pour modifier la coordonnée X d'une Label
objectA.Left = 100;
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)
Ç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);
objectname.Location = System.Drawing.Point (100,100);
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.
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;