簡體   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