views:

2578

answers:

5

I have a method that returns a value, and I want this value to be the new location of a label in a windows form application. but I'm being told that a label's location is not a variable. objectA is the name of the label.

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

how do I do this?

+7  A: 

the Location property is of type Point, which is a value type. Therefore, the property returns a copy of the location value, so setting X on this copy would have no effect on the label. The compiler sees that and generates an error so that you can fix it. You can do that instead :

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

(the call to Refresh is useless)

Thomas Levesque
A: 

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

Location is no a variable, just a public Property.
Changing variables through properties is a bady idea unless you have events that update the parent.

pixel3cs
+1  A: 

Use the Left property to change X coordinate of a Label

objectA.Left = 100;
Julien Poulin
This seems the most simple....is there any reason not to use it?
antimatteraustin
In the end, both the Left property and the Location property use the SetBounds method internally. The advantage with the Left property is that you don't have to create a new Point object witch might be a bit faster if you do it intensely...
Julien Poulin
A: 

This works to me

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

You even do not need to call Refresh or SuspendLayout etc.

so this should help you

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

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

Alynuzzu