在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但无济于事。任何帮助将不胜感激,谢谢。
答案 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设置。