自动调整组框内的列表框的大小
本文关键字:列表 调整 | 更新日期: 2023-09-27 17:53:37
我使用了一个包含两个groupbox(布局有2列)的TableLayoutPanel。在这些GroupBox中,我有两个listbox(每个GroupBox一个)。
当我尝试调整窗体的大小时,组框成功地调整到新的大小,但列表框没有。我试图改变一些参数,如码头,锚,最小尺寸,修改器等,基于其他帖子或多或少类似的问题。但似乎没有什么使我的列表框的大小动态。
你们知道吗?
如果你将所有控件设置为DockStyle.Fill
和AutoSize = true
,你应该能够调整列表框的大小。
如果你在组框中有多个控件,我建议你在每个你想自动调整大小的控件中使用TableLayoutPanel
。
也可以设置RowStyle
和ColumnStyle
为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);
}
感谢所有的回答和评论。我找到解决办法了!!实际上,问题在于分组框内部的布局;它被分成三行,并且包含列表框的行的"syze类型"被设置为自动大小。我只是将其更改为绝对(以像素为单位),这就成功了!