すべてのコントロールを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);
}
独自のユーザーコントロールを行う方が簡単です。グループボックスのリストボックスなどを置く。次に、新しいユーザーコントロールをtablelayoutpanelに配置します。管理が簡単です。 –
ListBoxコントロールがGroupBoxコントロールの子であることを確認してから、Anchorプロパティを設定します。あなたはおそらく親のGroupBoxのすべての側面にそれらを固定したいでしょう。 –
'Dock'プロパティと' Anchor'プロパティを設定するだけで、簡単に目的のレイアウトを実現できます。たとえば、 'GroupBox'の' Dock'プロパティを 'Fill'に設定し、その子の' ListBox'の 'Anchor'を' Top、Left、Bottom、Right'に設定します。また、 'ListBox'の' IntegralHeight'プロパティを 'false'に設定してください。 –