DOBON.NET DOBON.NETプログラミング掲示板過去ログ

動的にリストボックスを展開する

環境/言語:[C#]
分類:[.NET]

こんにちは。
チェックボックスがチェックされている時のみ、リストボックスを展開する方法を教えてください。

Windowsフォームアプリで、以下のようなデザインになっています。
□checkBox1
[listBox1]
□checkBox2

以下の動作を考えています。
checkBox1がチェックされている時、listBox1を表示する。
checkBox1がチェックされていない時、listBox1を非表示にし、表示されていたスペースを圧縮し、checkBox1のすぐ下にcheckBox2を表示する。

Visible = falseにして、checkBox2の座標を調整すればできるのですが、シンプルな方法はないでしょうか?

宜しくお願いいたします。
■No29796に返信(はまさんの記事)

Panel1
 ├Panel2 : Dock=Top
  │ └□checkBox1
 │
 ├[listBox1] : Dock=Top
 │
 └Panel3 : Dock=Top
    └□checkBox2

と配置すればlistBox1.visible = CheckBox1.Checked
でそれっぽい動きになります。初期値等は調整してください。 
ListBox1もPanelの中にいれてしまい、そのPanelの表示を切り替えてもよいかも
しれません。
■No29796に返信(はまさんの記事)
> Visible = falseにして、checkBox2の座標を調整すればできるのですが、シンプルな方法はないでしょうか?

手っ取り早い方法としては:

(1) FlowLayoutPanel を用意し、FlowDirection を TopDown にしておく。
(2) その上に checkBox1, listBox1, checkBox2 を並べる。
2012/02/08(Wed) 16:04:17 編集(投稿者)

shuさん、魔界の仮面弁士さん

お返事ありがとうございます。
両方の方法でできました。

ただ、申し訳ないのですが、上のデザインが書き間違えていました。
□checkBox1 listBox1
□checkBox2

お二人の回答のおかげで、以下のようにすれば実装できました。
FlowLayoutPanel
 ├Panel1 : Dock=Top, AutoSize=true, AutoSizeMode=GrowAndShrink
│ ├□checkBox1
│ │
 │ └listBox1
 │
 └Panel2 : Dock=Top, AutoSize=true, AutoSizeMode=GrowAndShrink
  └□checkBox2

ありがとうございました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板