簡體   English   中英

調整包含UserControl的面板的大小

[英]Resizing Panel Containing UserControl

我有一個包含不可見控件的UserControl,為使其可見,需要調整UserControl的大小。

我需要調整包含UserControl的面板的大小,但是我不知道如何。

Panel和Form類可以很好地處理此行為,而無需顯式調整大小(並且當用戶使用高DPI監視器或使用大字體或超大字體設置時,也不會引入布局錯誤)。

1)使用停靠的FlowLayoutPanel創建一個表單。

停靠

2)將Form和FlowLayoutPanel的AutoSize設置為true,將AutoSizeMode設置為GrowAndShrink

成長與收縮

3)添加面板和內容。

設計

4)以編程方式將所需面板的Visible屬性設置為hidden

hiddenPanel.Visible = false;

隱

5)或是

hiddenPanel.Visible = true;

可見

將此代碼放在用戶控件中:

Size last = new Size(0, 0);

private void Me_Resize(object sender, System.EventArgs e)
{
    if (last != new Size(0, 0)) {
        this.Parent.Size = Size.Add(this.Parent.Size, Size.Subtract(this.Size, last));
    }
    last = this.Size;
}

還將保留邊距(例如,如果面板大於您的用戶控件或除用戶控件之外還有其他控件)。

要調整控件的大小,請調用控件的scale。

           // To zoom in controls.
            foreach (Control c in MyFlowLayoutPanel.Controls)
            {
                PictureBox ptc = c as PictureBox;

                if (null != ptc)
                {
                    Point pt = new Point(2, 2);
                    SizeF sf = new SizeF(pt);
                    c.Scale(sf);
                }
            }

//縮小控件。 foreach(MyFlowLayoutPanel.Controls中的控件c){PictureBox ptc = c as PictureBox;

                                if (null != ptc)
                                {
                                    SizeF sf = new SizeF(0.5F, 0.5F);
                                    c.Scale(sf);
                                }
                            }

我知道這個主題已經很老了,但是我也想添加我的方法...

如果您的面板包含一個UserControl,則可以通過觸發Form1_Resize事件輕松地調整panel.Controls的大小。

 private void Form1_Resize(object sender, EventArgs e)
        {
            foreach (Control control in MasterPanel.Controls)
            {
                control.Size = MasterPanel.Size;
            }

        }

只要確保您正確錨定其內容即可。

如果您想將其調整為特定大小,可以在后面的代碼中進行操作:

Size panelSize = new Size(500, 500);
usercontrol1.Parent.Size = panelSize;

如果要從中調整大小,則可以將此代碼添加到用戶控件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM