繁体   English   中英

设置C#Picturebox容器

[英]Set C# Picturebox Container

我正在使用PictureBox控件创建Windows窗体,并且需要知道它们相对于窗体的位置。 我想将它们的容器更改为窗体,但是它们必须保留在它们已经位于的Panel控件的顶部。是否可以通过代码设置图片框的容器?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM