2016-06-30 15 views
0

2つのGroupBoxを含むTableLayoutPanelを使用します(Layoutには2つの列があります)。これらのGroupBoxの中には、とりわけ2つのListBox(各GroupBoxに1つ)があります。GroupBox内にあるListBoxを自動サイズ変更する

フォームのサイズを変更しようとすると、GroupBoxは新しいサイズに調整するのに成功しますが、リストボックスは正しく表示されません。ドック、アンカー、最小サイズ、モディファイアなど、いくつかのパラメータを変更しようとしました。しかし、私のListBoxのサイズを動的にするものはありません。

皆さん、ありがとうございますか?

+0

独自のユーザーコントロールを行う方が簡単です。グループボックスのリストボックスなどを置く。次に、新しいユーザーコントロールをtablelayoutpanelに配置します。管理が簡単です。 –

+1

ListBoxコントロールがGroupBoxコントロールの子であることを確認してから、Anchorプロパティを設定します。あなたはおそらく親のGroupBoxのすべての側面にそれらを固定したいでしょう。 –

+0

'Dock'プロパティと' Anchor'プロパティを設定するだけで、簡単に目的のレイアウトを実現できます。たとえば、 'GroupBox'の' Dock'プロパティを 'Fill'に設定し、その子の' ListBox'の 'Anchor'を' Top、Left、Bottom、Right'に設定します。また、 'ListBox'の' IntegralHeight'プロパティを 'false'に設定してください。 –

答えて

0

すべての回答とコメントに感謝します。私は解決策を見つけました! 実際問題はグループボックス内のレイアウトでした。 3行に分割され、リストボックスを含む行の "syze type"が自動サイズ設定されました。私はちょうどそれをアブソリュート(ピクセル単位)に変更しました。それがトリックでした!

0

すべてのコントロールを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); 
    } 
+0

私はリストボックスを知りませんでした。それはパラメータのリストにありません... –

関連する問題