用户控件不随窗体自动调整大小

3
我在设置用户控件自动随创建它的面板调整大小时遇到了麻烦。当用户调整包含用户控件的主窗体大小时,该用户控件的大小不会改变,导致用户体验较差。
迄今为止,我尝试了以下步骤:
1. 确保用户控件上的 MinimumSize 和 MaximumSize 属性均设置为 0。 2. 将 AutoSize 属性分别设置为 True,分别应用于用户控件和其所在面板。 3. 将面板的 Anchor 属性设置为 Top、Bottom、Left、Right。 4. 使用以下代码将 Dock 属性设置为 Fill。
这些尝试都没有改变我的用户控件行为。
CalcUserControl calcControl = new CalcUserControl(CountryId);
calcControl.Dock = DockStyle.Fill;
panelUserCtrl.Controls.Clear();
panelUserCtrl.Controls.Add(calcControl);

非常感谢您提出的任何建议。

2个回答

3
尝试将AutoSize属性设置为False。
另外,不要调用Controls.Clear();,尝试对其中的控件进行处理和释放,例如:
while (panelUserCtrl.Controls.Count > 0) {
  panelUserCtrl.Controls[0].Dispose();
}

否则,您将会泄露内存,因为那些已被移除的控件仍然存在。

感谢您回复。不幸的是,将AutoSize设置为False并没有解决我的问题。用户控件仍然保持我在设计器中分配的原始大小。 - user1391337
另外,我根据您的建议更改了“Controls.Clear();”这一行。谢谢。 - user1391337
@user1391337 您发布的代码无法重现相同的结果。您可能有其他容器控件干扰了 panelUserCtrl,导致它无法正确调整大小。 - LarsTech
感谢LarsTech的建议。我有两个用户控件产生相同的问题。用户控件包含一个TableLayoutPanel,每个单元格都包含一个单独的Panel。 - user1391337
@user1391337 你确定 UserControl 是有调整大小问题的控件,还是里面的 TableLayoutPanel 控件有调整大小的问题?你现在开始在一个面板中放置了很多嵌套的面板… - LarsTech
当我移除了TableLayoutPanel后,我能够通过在UserControl上设置以下属性来获得所需的行为: - user1391337

0

你应该将 AutoSizeMode 也设置为 GrowAndShrink。


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