我有一个包含不可见控件的用户控件,为了使它们可见,用户控件会进行调整大小。我需要调整包含用户控件的面板大小,但我不知道该怎么做。
1) 创建带有停靠的 FlowLayoutPanel 的表单。
2) 将表单和 FlowLayoutPanel 的 AutoSize 设置为 true 和 AutoSizeMode 设置为 GrowAndShrink
3) 添加您的面板和内容。
4) 以编程方式将所需面板的 Visible 属性设置为隐藏。
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;
}
还将保留边距(例如,如果面板大于您的用户控件或在您的用户控件旁边有其他控件)。
我知道这个话题已经很老了,但我想添加我的方法...
如果您有一个包含UserControl的Panel,您可以通过触发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;
如果您希望从用户控件中调整大小,可以将此代码添加到用户控件中。
// 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 (Control c in MyFlowLayoutPanel.Controls) { PictureBox ptc = c as PictureBox;
if (null != ptc)
{
SizeF sf = new SizeF(0.5F, 0.5F);
c.Scale(sf);
}
}