【问题标题】:UserControl does not auto resize with the FormUserControl 不使用窗体自动调整大小
【发布时间】:2013-04-15 15:14:34
【问题描述】:

我在将用户控件设置为使用创建它的面板自动调整大小时遇到​​问题。当用户调整包含用户控件的主窗体的大小时,此用户控件的大小根本不会改变,从而导致用户体验不佳。

到目前为止,我尝试了以下操作:

  1. 确保用户控件上的 MinimumSizeMaximumSize 属性设置为 0。
  2. 将 (1) 用户控件和 (2) 其所在面板的 AutoSize 属性设置为 True
  3. 将面板上的Anchor属性设置为TopBottomLeftRight强>
  4. 将用户控件的 Dock 属性设置为 Fill(我使用以下代码进行了此操作)

这些尝试对我的用户控件的行为没有影响:

CalcUserControl calcControl = new CalcUserControl(CountryId);
calcControl.Dock = DockStyle.Fill;
panelUserCtrl.Controls.Clear();
panelUserCtrl.Controls.Add(calcControl);

任何建议将不胜感激。

【问题讨论】:

    标签: winforms user-controls windows-forms-designer


    【解决方案1】:

    尝试将 AutoSize 属性设置为 False。

    另外,不要调用Controls.Clear();,而是尝试处理其中的控件,例如:

    while (panelUserCtrl.Controls.Count > 0) {
      panelUserCtrl.Controls[0].Dispose();
    }
    

    否则,您将泄漏内存,因为那些已删除的控件仍然存在。

    【讨论】:

    • 感谢您回来。不幸的是,将 AutoSize 设置为 False 并没有为我解决这个问题。 UserControl 保持我在设计器中分配的原始大小。
    • 另外,我更改了“Controls.Clear();”按照你的建议行。谢谢。
    • @user1391337 您发布的代码不会重现相同的结果。您必须有其他一些容器控件干扰 panelUserCtrl,从而阻止它正确调整大小。
    • 感谢 LarsTech 的建议。我有两个产生相同问题的用户控件。 UserControl 包含一个 TableLayoutPanel,并且 TableLayoutPanel 的每个单元格都包含一个单独的面板。
    • @user1391337 您确定 UserControl 是存在调整大小问题的控件,还是其中的 TableLayoutPanel 控件是存在调整大小问题的控件?您开始在面板内的面板内有很多面板......
    【解决方案2】:

    您也应该将 AutoSizeMode 设置为 GrowAndShrink。

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多