Update label location in C#?

2019-01-23 15:00发布

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?

6条回答
放我归山
2楼-- · 2019-01-23 15:29

You can only set properties of structs if you have a direct reference to that struct:

Point loc = objectA.Location;
loc.X = (int)A.position;
objectA.Location = loc;
查看更多
▲ chillily
3楼-- · 2019-01-23 15:29
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.

查看更多
叛逆
4楼-- · 2019-01-23 15:34

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);
查看更多
【Aperson】
5楼-- · 2019-01-23 15:41

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)

查看更多
SAY GOODBYE
6楼-- · 2019-01-23 15:45

Use the Left property to change X coordinate of a Label

objectA.Left = 100;
查看更多
爱情/是我丢掉的垃圾
7楼-- · 2019-01-23 15:52

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

查看更多
登录 后发表回答