2009-06-09 2 views
11

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

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

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

ответ

12

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

objectA.Left = 100; 
+1

Это кажется самым простое .... есть ли причина, чтобы не использовать его? – avaleske

+2

В конце, как свойство Left, так и свойство Location используют метод SetBounds внутри. Преимущество свойства Left заключается в том, что вам не нужно создавать новый объект Point, ведь если вы сделаете это интенсивно ... –

18

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

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

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

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

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

7

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

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

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

так это должно помочь вам

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

имя_объекта. Местонахождение = System.Drawing.Point (100,100);

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^