自动调整GroupBox中的ListBox

时间:2016-06-30 13:26:40

标签: c# winforms listbox

我使用包含两个GroupBox的TableLayoutPanel(Layout有2列)。在这些GroupBox中,除其他外,我有两个ListBox(每个GroupBox一个)。

当我尝试调整表单大小时,GroupBox会成功调整为新大小,但ListBoxes不会。我试图根据其他关于或多或少类似问题的帖子更改一些参数,如停靠,锚点,最小尺寸,修改器等。但似乎没有什么能让我的ListBoxes'大小动态。

你们有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果您将所有控件设置为DockStyle.FillAutoSize = true,则应该可以调整列表框的大小。

如果您的群组中有多个控件,我建议您为每个要自动调整大小的控件使用TableLayoutPanel

此外,您可以将RowStyleColumnStyle设置为SizeType.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);
    }

答案 1 :(得分:0)

感谢所有的答案和评论。我找到了解决方案!! 实际上问题是组合框内的布局;它分成三排," syze类型"包含列表框的行被设置为自动调整大小。我只是将它改为绝对(以像素为单位),这就是诀窍!