[英]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.