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

C# 调整面板C中嵌入式用户控件的大小#,c#,winforms,resize,C#,Winforms,Resize,在C#中使用WinForms,我很难让嵌入式用户控件正确调整大小。我可以毫无问题地将其添加到面板中,并且面板会按照我的预期(和希望)调整大小 要添加UserControl,我将执行以下操作: content.Controls.RemoveAt(0); content.Controls.Add(c); content.Controls[0].Dock = DockStyle.Fill; content.Refresh(); 我不知道如何使新添加的控件正确地调整大小,我也尝试过使用锚定来调整顶部、

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

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

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

我不知道如何使新添加的控件正确地调整大小,我也尝试过使用锚定来调整顶部、底部、左侧、右侧,但没有效果。非常感谢您的帮助。

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


控件的本地变量仍然有效,您可以通过
c.dock=DockStyle.Fill

在下面添加将使用父控件大小调整用户控件的大小

this.Dock = DockStyle.Fill; 
但是,如果要调整用户控件的子控件的大小,则必须正确设置其停靠值和锚定值。否则,主用户控件将调整大小,但用户控件的内部子控件将保持原样

你说过

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

    private void SummaryData_Resize(object sender, EventArgs e)
    {
        foreach (MyPanel pan in this.Controls)
        {
            pan.Dock = DockStyle.Fill;
        }
    }
这对我很有效。

我已经调试了代码,似乎在
OnResize
上,我所有的
面板都丢失了停靠设置。

使用content.Controls[c.Name].Dock=DockStyle.Fill;具有相同的结果(即根本不调整大小)。添加这个.Dock=DockStyle.Fill在UserControl中似乎有点帮助,但仍然无法正确调整大小(控件向下移动,而不是向下调整大小)@Joeb:那么您需要在用户控件内正确定义控件的停靠/锚定。框架无法神奇地知道您希望这些东西如何调整大小。谢谢,原来在混合中的某个地方有一个幻影面板,但是检查了所有内容并添加了
this.Dock=DockStyle.Fill
似乎已经完成了我想要的。谢谢你们两位!