我有一个panel1,上面有pictureBox1。默认情况下,panel1是pictureBox1的父级。 pictureBox1的位置30,30。我在pictureBox1上放了4个标签,默认情况下它们的坐标由panel1确定。对于所有标签,我指定一个事件All_ParentChanged。使用Form1_Load事件(或在构造函数中)我将pictureBox1指定为所有标签的父级,如label1-> Parent = pictureBox1 ...这会自动初始化All_ParentChanged事件。在这种情况下,我改变所有标签的坐标+40 pxls,+ 40 pxls。我是这样做的:
label1->Location = Point(label1->Left + 40, label1->Top + 40);
label2->Location = Point(label2->Left + 40, label2->Top + 40);
label3->Location = Point(label3->Left + 40, label3->Top + 40);
label4->Location = Point(label4->Left + 40, label4->Top + 40);`
但我猜我有100个标签。为所有人写一条线是很多垃圾。所以我想问的是我可以使用System :: Object的发送者来执行一行,例如:
sender->Location = Point(sender->Left + 40, sender->Top + 40);
我使用了这段代码,但它说Location不是System :: Object的成员。请帮帮我。提前谢谢。
答案 0 :(得分:2)
是的,你可以这样做:
Label^ senderLabel = safe_cast<Label^>(sender);
senderLabel->Location = Point(senderLabel->Left + 40, senderLabel->Top + 40);
但ParentChanged
事件似乎是错误的做法。为什么设计师的所有位置都不对?你能用一个标签创建一个数组吗,这样你就可以对多个标签做一切(为整个数组设置Parent
,没问题。调整位置,没问题)