2014-08-31 127 views
1

我试图以编程方式设置标签的位置,但编译器说,这是不是一个变量的位置,更改标签

label1.Location.X = 200;// shows an error 

有什么诀窍,我可以用移动标签周围做不包括隐藏和显示控件。

该技术是可视c#不是WPF。

我正在寻找一种方式来移动窗体上的一些文字,我分出的文本,标签为每个,也是数学公式

(x',y')=center;x'=200,y'=200,r=100 
(x,y)=point on the circle. 
sqr(x-x')+sqr(y-y')=sqr(r) => sqr(x-200)+sqr(y-200)=10000 => sqr(x)-400x+sqr(y)-400y+70000=0 => 
x1=(400+sqrt(160000-4sqr(y)+1600y-280000))/2 ; 
x2=(400-sqrt(160000-4sqr(y)+1600y-280000))/2 

而且我在考虑使用线程的特点刷新表格并创建议案,这只是我想要解决的一些想法,因为您在问。

非常感谢。

+2

我们都渴望代码。 – SimpleVar 2014-08-31 09:42:24

+0

你能提供更多细节吗?这是猜测,否则 - 什么技术?的WinForms? WPF? MVC?任何代码?什么是错误?等等..帮我们帮你 – Charleh 2014-08-31 09:42:47

+0

谢谢你的关注,我已经更新了相应的问题 – TiMr 2014-08-31 10:03:22

回答

3

每一个.NET程序员,使这个错误至少一次。位置属性是一个点,值类型。当你检索它的值时,你会得到一个副本,就像值类型的行为一样。您正在更新该副本的X属性,编译器可以告诉您这是而不是您的想法。

你必须指定一个点来更新属性值:

label1.Location = new Point(200, label1.Location.Y); 

或使用是为了避免写这个代码的特性:

label1.Left = 200; 
2

要正确更改标签的位置,您必须将Location设置为一个值(而不是Location的X属性)。

lbl.Location = new Location(20, 50); 

如果您希望保留Y坐标,例如,你可以这样做:

lbl.Location = new Location(20, lbl.Location.Y); 
+0

哦,那会很好,非常感谢。 – TiMr 2014-08-31 10:11:59

+0

我可能得到了错误,因为我没有VS atm,但我相信你可以从那里解决它。乐意效劳。 *编辑:完全检查汉斯的答案* – SimpleVar 2014-08-31 10:15:33