调整包含用户控件的面板大小

3
我有一个包含不可见控件的用户控件,为了使它们可见,用户控件会进行调整大小。我需要调整包含用户控件的面板大小,但我不知道该怎么做。

你想从用户控件还是页面调整大小?这有关系吗? - James Johnson
从窗体中的用户控件 - mggSoft
5个回答

7
该行为由面板和表单类在没有显式大小设置时(且当用户具有高 DPI 显示器或使用大号或超大号字体设置时不会引入布局错误)得到良好处理。

1) 创建带有停靠的 FlowLayoutPanel 的表单。

Docked

2) 将表单和 FlowLayoutPanel 的 AutoSize 设置为 true 和 AutoSizeMode 设置为 GrowAndShrink

GrowAndShrink

3) 添加您的面板和内容。

Design

4) 以编程方式将所需面板的 Visible 属性设置为隐藏。

hiddenPanel.Visible = false;

隐藏

5) 或者 真

hiddenPanel.Visible = true;

Visible


此外,面板必须在 flowLayoutPanel 中进行“顶部停靠”。然后,使用右键单击 -> BringToFront / SendToBack 来排序停靠顺序。 - Kianii

2

把这段代码放在用户控件中:

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;
}

还将保留边距(例如,如果面板大于您的用户控件或在您的用户控件旁边有其他控件)。


0

我知道这个话题已经很老了,但我想添加我的方法...

如果您有一个包含UserControl的Panel,您可以通过触发Form1_Resize事件轻松地调整panel.Controls的大小。

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

        }

请确保正确地锚定它的内容。


0

如果您想将其调整为特定大小,则可以在代码后端进行操作:

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

如果您希望从用户控件中调整大小,可以将此代码添加到用户控件中。


0
调整控件大小,调用控件的比例尺。
           // 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);
                                }
                            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接