【问题标题】:How do I make multiple controls in a Windows Form automatically resize with the window?如何使 Windows 窗体中的多个控件随窗口自动调整大小?
【发布时间】:2011-08-15 05:45:01
【问题描述】:

我是 Visual Studio 中 Windows 窗体的新手,我想知道如何根据窗口大小自动调整控件的大小。

比如说,我在一个面板中有 2 个控件,一个列表框和一个按钮。我希望按钮停靠在底部,并且希望列表框适合其余空间。当窗口调整大小时,按钮应位于底部(与停靠一样),列表框应向下延伸到按钮。

有没有办法不用任何代码来做到这一点?

谢谢。

【问题讨论】:

    标签: c# winforms visual-studio-2010


    【解决方案1】:

    当你想要保持每个控件的纵横比时,它真的会变得很混乱。一种不是真的如果你想修复细节的方法是使用TableLayoutPanel并使用DockAnchor明智 实现你想要的。

    【讨论】:

      【解决方案2】:

      Dock 非常易于使用,但我建议改用 Anchor 属性。在 Designer 中将表单调整为合理的大小。然后,放置您的控件以使其看起来像您想要的那样。然后,决定哪些控件应随表单调整大小并设置 Anchor 属性,如下所示:

      • 如果您希望控件随窗体宽度调整大小,请设置右锚点。
      • 如果要调整高度,请设置底部锚点。
      • 如果您希望控件在窗体调整大小时保持在右侧,请取消设置左侧锚点。
      • 如果您希望控件在窗体调整大小时保持在底部,请取消设置顶部锚点。

      我在使用 Docks 时遇到的问题是,当控件未按特定顺序声明时,它们有时会显得很滑稽,为了获得您想要的效果,有时您必须创建无关面板来保存控件。

      【讨论】:

        【解决方案3】:

        尝试将 ListBox 的 Dock 属性设置为 Fill。

        不过,您需要注意一件事:默认情况下,ListBox 会自行调整大小以显示整个列表项。如果您调整控件的大小以使其显示部分项目,它将自行调整以显示完整的项目。这会使控件看起来失去其“停靠”行为。解决方案是将 ListBox 的 IntegralHeight property 设置为 false,这指定控件不会调整自身大小以适应完整的项目。

        【讨论】:

        • 感谢您的提示!不幸的是,列表框仍然出现在按钮下方。我已经将按钮停靠设置为按钮,但它仍然出现在列表框的顶部。
        • @sFuller - 啊。右键单击列表框并选择“置于前面”。并且不要忘记设置 IntegralHeight = false。
        【解决方案4】:

        您可以使用SplitContainer

        谷歌的例子。这里是one

        【讨论】:

          【解决方案5】:

          使用控件上的停靠和填充选项。查看每个对象的属性以及容器(如果有的话)。

          【讨论】:

          • 我将 ListBox 设置为填充,并将按钮设置为底部。 ListBox 填充容器,但它位于按钮下方。
          • 您可能需要将按钮停靠在列表框的底部。尝试不同的停靠设置以查看其工作原理,或查看此处:techrepublic.com/article/…
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-21
          • 2013-04-30
          • 1970-01-01
          • 1970-01-01
          • 2023-01-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多