winforms 设置标签,Parent = pictureBox将标签移动到pictureBox的底部

yquaqz18  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(204)

我有一个标签,我想放在图片框的顶部。我希望它有一个透明的背景。
how i want it to look like
在这里寻找答案时,我发现了这个解决方案:
infoText1.Parent = bg1; infoText1.BackColor = Color.Transparent;
但是,当我试图运行该项目时,标签移到了图片框的最底部。
what it looks like when i run the project

dpiehjr4

dpiehjr41#

控件的Location是相对于其父控件的,所以如果你改变Parent,你就改变了它相对于窗体的位置,改变的量是新的父控件相对于旧的父控件的偏移量。对此进行补偿的方法是在你改变Parent之前获得控件的绝对位置,然后改变Parent。然后把它放回原来的绝对位置。你可以这样做:

'Get the screen coordinates of the child control's Location.
Dim screenLocation = childControl.PointToScreen(Point.Empty)
'This would do the same thing:
'Dim screenLocation = 'childControl.Parent.PointToScreen(childControl.Location)

'Change the Parent.
childControl.Parent = newParent

'Set the child control's Location to those same screen coordinates.
childControl.Location = newParent.PointToClient(screenLocation)

如果还没有,应该将Label精确定位在设计器中所需的位置,然后在更改父代时代码将保持该位置。

相关问题