我使用包含两个GroupBox的TableLayoutPanel(Layout有2列)。在这些GroupBox中,除其他外,我有两个ListBox(每个GroupBox一个)。
当我尝试调整表单大小时,GroupBox会成功调整为新大小,但ListBoxes不会。我试图根据其他关于或多或少类似问题的帖子更改一些参数,如停靠,锚点,最小尺寸,修改器等。但似乎没有什么能让我的ListBoxes'大小动态。
你们有什么想法吗?
答案 0 :(得分:0)
如果您将所有控件设置为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);
}
答案 1 :(得分:0)
感谢所有的答案和评论。我找到了解决方案!! 实际上问题是组合框内的布局;它分成三排," syze类型"包含列表框的行被设置为自动调整大小。我只是将它改为绝对(以像素为单位),这就是诀窍!