设置C#Picturebox容器

时间:2016-07-10 11:45:23

标签: c# winforms picturebox

我正在创建一个带有PictureBox控件的Windows窗体,需要知道它们相对于窗体的位置。我想将容器更改为表单,但它们必须保留在它们已经存在的Panel控件之上。有没有办法通过代码设置图片框的容器?

1 个答案:

答案 0 :(得分:1)

您可以通过设置控件Parent属性然后调用BringToFront方法来完成您的要求。

但是更改父级也会更改控件位置的处理方式,因此为了将其保留在原始位置,您需要知道表单的相对位置。这将使您回到原始问题。

可以使用PointToScreenPointToClient这样的方法来确定控件与表单的相对位置:

public static class ControlUtils
{
    public static Point GetFormLocation(this Control control)
    {
        return control.FindForm().PointToClient(control.PointToScreen(control.Location));
    }
}

所以你可以使用

var formLocation = pictureBox.GetFormLocation();

随时您需要知道图片框与表单的相对位置。

如果这就是你所需要的,我建议你不要更换他们的容器。但是如果你仍然想要这样做,你可以使用这样的东西:

var location = pictureBox.PointToScreen(pictureBox.Location);
pictureBox.Parent = pictureBox.FindForm();
pictureBox.Location = pictureBox.Parent.PointToClient(location);
pictureBox.BringToFront();