在面板C#中调整嵌入式用户控件的大小

时间:2011-05-29 21:11:42

标签: c# winforms resize

在C#中使用WinForms,我很难让嵌入式用户控件正确调整大小。我可以毫无问题地将它添加到面板中,并且面板按照我的预期(并希望)进行调整。

要添加UserControl,我正在执行以下操作:

content.Controls.RemoveAt(0);
content.Controls.Add(c);
content.Controls[0].Dock = DockStyle.Fill;
content.Refresh();

我无法弄清楚如何让新添加的控件正确调整大小,我也尝试使用Anchor with Top,Bottom,Left,Right但无济于事。任何帮助将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:2)

您是否100%确定Controls [0]实际上是在添加后引用您的控件?

您对控件的本地var仍然有效,您可以通过c.Dock = DockStyle.Fill;

测试您是否正在设置停靠对象

答案 1 :(得分:2)

以下添加将使用父控件大小调整用户控件的大小。

this.Dock = DockStyle.Fill; 

但是,如果要调整用户控件的子控件的大小,则必须正确设置其停靠值和锚点值。否则,主用户控件将调整大小,但用户控件的内部子控件将保持不变。

你说过了;

<<控件向下移动,而不是向下调整

如果您想要垂直拉伸某些子控件,可以尝试使用FlowLayout面板。

答案 2 :(得分:1)

我已经明白了。
在作为所有添加的面板的基础的面板上添加Resize事件的处理程序 在OnResize()添加:

    private void SummaryData_Resize(object sender, EventArgs e)
    {
        foreach (MyPanel pan in this.Controls)
        {
            pan.Dock = DockStyle.Fill;
        }
    }

对我有用。
我调试了代码,似乎OnResize所有panels都丢失了Dock设置。