【问题标题】:C# Winforms: GroupBox not resizingC# Winforms:GroupBox 未调整大小
【发布时间】:2016-07-28 21:30:21
【问题描述】:

我的一个TabControls 的左侧有两个GroupBoxes,分别称为GroupBox A(左上角)和GroupBox B(左下角)。 GroupBoxes 不会像我希望的那样调整大小。

示例: 当我用鼠标调整具有 TabControls 的主窗体的大小,或将其最大化,或将其移动到分辨率较低的屏幕时,GroupBox B 会保持其宽度/高度。这会导致 GroupBox B 绘制在 GroupBox A 上,有点像“始终在顶部”的效果。

期望: 希望两个 GroupBoxes 根据彼此/按比例调整大小并适合它们给定的区域。

想法?

【问题讨论】:

  • 检查你的应用CSS
  • 谢谢Sourabh,但我没有,这个应用程序是Winform应用程序。
  • 好的,然后将dock属性设置为FILL,它肯定可以工作
  • 因为设置了停靠属性时,win 表单中的任何控件都会调整大小。并且必须设置为dock才能填充
  • 将 Dock 属性设置为 Fill 使组框扩展到窗体的两侧,并覆盖了两个 GroupBox 右侧的 DataGridView。我尝试将 Dock 属性设置为 LEFT,但效果相同。

标签: winforms c#-4.0 groupbox


【解决方案1】:

tableLayoutPanel 可以帮助解决这个问题。

  1. 添加一个 tableLayoutPanel 并调整其大小以满足您的需求。
  2. 将表格定位到顶部、底部、左侧和右侧
  3. 将 GroupBoxA 放入表格左上角的单元格中
  4. 将 GroupBoxB 放入表格右下角的单元格中
  5. 对于这两个 GroupBox,它们都相应地调整大小并将它们锚定到所有 4 个侧面。
  6. 现在它们会随着应用的增加和缩小成比例。

此外,您还可以将更多控件添加到表格中。如果您需要一个控件来跨越多行或多列,请使用 RowSpan/ColumnSpan 属性。

【讨论】:

  • 仍在测试那个答案,还没有运气。您确定要将 GroupBox A 放在左上单元格中,将 GroupBox B 放在右下角单元格中吗?不是左上角单元格中的 GroupBox A 和左下角单元格中的 GroupBox B 吗?换句话说,用一列制作tableLayoutPanel?
  • 这取决于您的布局。如果两个单元格为您提供所需的内容,那么您可以使用一列,然后调整锚定以获得您想要的效果。如果要确保 GroupBoxB 不与 GroupBoxA 的底部或右侧重叠,则需要 2 列。如果你只关心它不通过底部,那么只需要一列。
  • 是的,在左侧的 tabControl 上只有两个分组框。一个在另一个之上。它们的右侧是一个 DataGridView。除了 GroupBox 之外,它们都可以很好地调整大小。还在玩锚定之类的,还没有运气。我能得到的最好的是将两个 groupBoxes 放入一个单列 tableLayoutPanel 中,一个在另一个之上,将它们都锚定到 TBLR 后,组框只显示一半并被切断。很奇怪。我应该上传这个截图吗?
  • 您还可以将所有控件添加到 tableLayoutPanel,而不仅仅是 groupBoxes。控件可以跨越表格的多个单元格以满足您的需要。那么你只有三个控件吗?两个分组框和一个 DataGridView?
  • 抱歉,一直在玩这个,没有看这个帖子。我将把表格描述为表格。第一行,一个穿过表单的组框。第二行,我有 tableLayoutPanel,然后是 DataGridView 第三行,我有一个更新进度条,它跨越到表单右下角的两个按钮。我想你是说我应该把所有东西都放到 tablePanelLayout 中。这个周末我得做这件事,看看我能适应什么、移动和锚定等等。有什么经验法则可以做到这一点,比如对接和锚定?
【解决方案2】:

如果您的 GroupBox 在另一个控件(如选项卡或其他控件)内,请执行以下操作:

在我的例子中,我在标签内有一个 GroupBox,我在 InitializeComponent() 方法中调用了以下方法来强制 Groupbox 调整到标签大小。

this.groupBox4.ResumeLayout(false);
this.groupBox4.PerformLayout();
this.tabPage2.ResumeLayout(false);
this.tabPage2.PerformLayout();

如果您有多个 GroupBox,则需要相应地设置锚点。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,我刚刚为两个 GroupBox 使用了拆分容器,将拆分容器锚定在主窗体的顶部、底部、左侧和右侧,两个 GroupBox 也在顶部、底部、左侧和右侧他们的容器。

    【讨论】:

      【解决方案4】:

      与原始问题略有偏离,但我的问题是我的 Group Box 的 MaximumSize 字段没有设置,或者太小,所以我无法调整高度!

      【讨论】:

        【解决方案5】:

        虽然这个问题已经很老了,但有人可能仍然觉得它很有用...... 我遇到了同样的问题并找到了一个可行的解决方案->不是更改 GroupBox 的宽度/高度,而是在表单的调整大小方法中更改其最小宽度/高度

        编辑:修正错字

            private void Form1_Resize(object sender, EventArgs e) {
                groupBox1.MinimumSize = new Size(this.Width /2, this.Height);
            }
        

        【讨论】:

          猜你喜欢
          • 2019-09-06
          • 1970-01-01
          • 2012-03-31
          • 2014-09-04
          • 2014-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-02
          相关资源
          最近更新 更多