Обновить расположение метки на С#?

У меня есть метод, который возвращает значение, и я хочу, чтобы это значение было новым расположением метки в приложении формы Windows. но мне говорят, что расположение метки не является переменной. objectA - это имя метки.

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

как это сделать?

Ответ 1

Используйте свойство Left для изменения координаты X в Label

objectA.Left = 100;

Ответ 2

Свойство Location имеет тип Point, который является типом значения. Поэтому свойство возвращает копию значения местоположения, поэтому установка X на эту копию не повлияет на метку. Компилятор видит это и генерирует ошибку, чтобы вы могли ее исправить. Вы можете сделать это вместо:

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

(вызов Refresh бесполезен)

Ответ 3

Это работает для меня

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

Вам даже не нужно вызывать Refresh или SuspendLayout и т.д.

чтобы это помогло вам

this.label1.Location = new Point((int)A.position, (int)A.otherpos);

Ответ 4

objectname.Location = System.Drawing.Point(100100);

Ответ 5

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

Местоположение - это не переменная, а просто публичное свойство. Изменение переменных через свойства - это плохая идея, если у вас нет событий, которые обновляют родителя.

Ответ 6

Вы можете устанавливать свойства структур только в том случае, если у вас есть прямая ссылка на эту структуру:

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