自动调整组框内的列表框的大小

本文关键字:列表 调整 | 更新日期: 2023-09-27 17:53:37

我使用了一个包含两个groupbox(布局有2列)的TableLayoutPanel。在这些GroupBox中,我有两个listbox(每个GroupBox一个)。

当我尝试调整窗体的大小时,组框成功地调整到新的大小,但列表框没有。我试图改变一些参数,如码头,锚,最小尺寸,修改器等,基于其他帖子或多或少类似的问题。但似乎没有什么使我的列表框的大小动态。

你们知道吗?

自动调整组框内的列表框的大小

如果你将所有控件设置为DockStyle.FillAutoSize = true,你应该能够调整列表框的大小。

如果你在组框中有多个控件,我建议你在每个你想自动调整大小的控件中使用TableLayoutPanel

也可以设置RowStyleColumnStyleSizeType.AutoSize

在表单中,这段代码对我来说很好。

    private void InitComponents()
    {
        tableLayoutPanel1 = new TableLayoutPanel();
        groupBox1 = new GroupBox();
        groupBox2 = new GroupBox();
        listBox1 = new ListBox();
        listBox2 = new ListBox();
        tableLayoutPanel1.AutoSize = true;
        tableLayoutPanel1.AutoSizeMode = AutoSizeMode.GrowAndShrink;
        tableLayoutPanel1.ColumnCount = 2;
        tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize, 50F));
        tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
        tableLayoutPanel1.Controls.Add(groupBox2, 1, 0);
        tableLayoutPanel1.Controls.Add(groupBox1, 0, 0);
        tableLayoutPanel1.Dock = DockStyle.Fill;
        tableLayoutPanel1.RowCount = 1;
        tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
        groupBox1.AutoSize = true;
        groupBox1.AutoSizeMode = AutoSizeMode.GrowAndShrink;
        groupBox1.Controls.Add(listBox1);
        groupBox1.Dock = DockStyle.Fill;
        groupBox2.AutoSize = true;
        groupBox2.AutoSizeMode = AutoSizeMode.GrowAndShrink;
        groupBox2.Controls.Add(listBox2);
        groupBox2.Dock = DockStyle.Fill;
        listBox1.Dock = DockStyle.Fill;
        listBox1.AutoSize = true;
        listBox2.Dock = DockStyle.Fill;
        listBox2.AutoSize = true;
        Controls.Add(tableLayoutPanel1);
    }

感谢所有的回答和评论。我找到解决办法了!!实际上,问题在于分组框内部的布局;它被分成三行,并且包含列表框的行的"syze类型"被设置为自动大小。我只是将其更改为绝对(以像素为单位),这就成功了!