设置 C# 图片框容器

本文关键字:设置 | 更新日期: 2023-09-27 17:56:15

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

设置 C# 图片框容器

您可以通过设置控件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();