【问题标题】:Does the Split container control automatically resize the form?拆分容器控件是否自动调整窗体大小?
【发布时间】:2015-07-27 20:44:29
【问题描述】:

目前,我正在使用 Windows 窗体中的拆分容器控件和一个按钮,该按钮在单击时隐藏/显示拆分容器的 panel1 或 panel2。 panel1 和 panel2 在主窗体上的高度不同。

问题在于,一旦面板被隐藏,包含拆分容器的主窗体不会自动调整大小。

拆分容器上是否有一个选项也可以调整父控件的高度?或者你们中的一些人知道一旦拆分容器的面板之一被隐藏或显示,如何处理表单的这种调整大小?

【问题讨论】:

  • 这不是拆分容器的目的。拆分容器不会更改表单大小,而是允许您在两个面板之间共享表单大小。因此,如果其中一个面板不使用提供的空间,那么另一个面板将使用提供的所有空间。
  • 所以还有一些其他容器可以在其内容被隐藏或显示后调整表单大小?
  • 不是我见过的。你当然可以写一个。
  • 当然有;设置容器的AutoSize 属性和Form 来扩大和缩小。
  • 几个容器控件(Panel、FlowLayoutPanel ......)有一个 AutoSize 属性,当你编写它们的 Resize 事件以适应 Form.ClientSize 你得到了你想要的......:if (formsize smaller than panelsize) Form.ClientSize = panel.Size;

标签: c# .net windows forms


【解决方案1】:

只需将面板直接放在窗体上并将它们的 Location() 属性设置为相同的值(确保一个没有嵌套在另一个中)。使其中一个最初隐藏,然后在运行时切换它们的可见性。这会使表单的设计变得有些棘手!

设置Form的AutoSize属性为True,AutoSizeMode属性为GrowAndShrink:

    private void button1_Click_1(object sender, EventArgs e)
    {
        panel1.Visible = !panel1.Visible;
        panel2.Visible = !panel2.Visible;
    }

我的测试表单自动更改大小以适应当前可见面板的大小。

【讨论】:

    【解决方案2】:

    只需设置 scSplitContainer.Panel1Collapsed 或 scSplitContainer.Panel2Collapsed = true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2023-01-15
      • 2013-04-30
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2013-11-30
      相关资源
      最近更新 更多