在我的GUI中,我需要将Parents
的{{1}}更改为后台PictureBoxes
,以便透明度正常工作。
但是,更改父级也会更改图片框的位置。我试过通过PictureBox
抓取图片框的绝对位置,但它不起作用。我将坐标放在注释中,并且在分配新父项后它们不会更改,即使图像明显改变了位置。此外,我不认为它可能会工作,因为它通过了一个点,而不是一个有关父母的更多信息的对象,以及推断绝对位置所需要的东西。
推断元素绝对位置的正确方法是什么,以便在父元素更改后将图像移动到正确的位置?或者有更好的方法吗?
PointToClient
答案 0 :(得分:2)
这会将控件child
从一个父级移动到一个父级,保持绝对屏幕位置不变:
void MoveTo(Control child, Control newParent )
{
child.Location = newParent.PointToClient(child.PointToScreen(Point.Empty));
child.Parent = newParent;
}
PointToClient
和PointToScreen
的技巧是从右侧父控件中使用它们;不设置控件将默认为Form
,这将错过父母的实际位置..