コンテナ・コントロールの利点
|
今回は,コンテナ・コントロールの使い方について説明したいと思います。コンテナ・コントロールを使うと,コンテナ上に配置したコントロールをまとめて扱うことができます。
代表的なコンテナであるPanel(パネル)を使って,まとめて扱えると何がうれしいのかを確認しましょう(図1)。
図1●代表的なコンテナ・コントロールであるPanelを使った例 |
ツールボックスから,Panelを二つ配置し,それぞれのPanelの上に,TextBox(テキストボックス)とLabel(ラベル)を三つずつ配置しました。Panelがテキストボックスなどの複数のコントロールをグループとしてまとめます。
「Panel1 表示/非表示」というボタン(Button1)と,「Panel2の項目をクリア」というボタン(Button2)を作成しました(リスト1)。
|
リスト1●[Panel1 表示/非表示]ボタン(Button1)と[Panel2の項目をクリア]ボタン(Button2)のClickイベントハンドラ |
panel1Visiというブール型の変数を,Panel1が表示状態か否かを判断するために使っています。Button1が押されたときにTrue/Falseの値を逆転させ,Panel1.Visibleプロパティに設定しています(図2)。
図2●[Panel1 表示/非表示]ボタンによってPanel1の表示/非表示が切り替わる |
Button1をクリックすると,Panel1が非表示になります(再度クリックすると表示)。コンテナであるPanel1が非表示になれば,当然その上に配置したTextBoxやLabelも非表示になります。グループのメンバーをまとめて非表示にすることができるので,コントロールを個別に非表示にするより効率的です。
Button2のクリック時の処理は,Panel2上のテキストボックスに入力された文字列のクリア処理です。Panel2上のコントロールを一つ一つ調べ,コントロールのタイプがTextBoxだったら,Textプロパティをクリアしています。処理は個々のコントロールに対して行いますが,同じPanel上の各コントロールに対してという処理(For Each ctl As Control In Panel2.Controls)ができるのです。
表1は,Panel以外の代表的なコンテナです。TabControlやGroupBoxはよく利用されています。FlowLayoutPanel,SplitContainer,TableLayoutPanelはVisual Studio(VS)2005で新たに追加されたコンテナ・コントロールです。もちろん,PanelにしてもTextBoxにしてもForm上に配置するわけですから,Form(フォーム)もコンテナと考えることができます。
表1●Panel以外の代表的なコンテナ・コントロールコントロール名 | 機能 | VS 2005から搭載 |
TabControl | タブページを切り替えることができる | |
GroupBox | RadioButtonをグループ化する | |
FlowLayoutPanel | 流れるように順にコントロールを配置する | ◎ |
SplitContainer | 二つの領域のサイズを変更できる | ◎ |
TableLayoutPanel | 表形式にコントロールを配置する | ◎ |
TabControlとGroupBoxをおさらい
TabControlやGroupBoxは,業務アプリケーションの開発では,なくてはならない存在です。例えば,売上-請求-入金を管理するようなアプリケーションでは,得意先の情報を登録,管理する必要があります。得意先コード,得意先名に始まって,住所や連絡先として必要な情報,請求した金額を回収するための情報…と,1件の得意先について記憶しておかなければならない項目は多岐にわたります。
その際TabControlを使うと,項目のカテゴリ別に,TabPage(タブ・ページ)として複数のページに分類できるので便利です。TabControlを使わないで,フォームに全項目を配置したら,ごちゃごちゃした使いにくいフォームになってしまうでしょう。
図3●TabControlの利用例 |
図4●GroupBoxの利用例 |
TabControlを配置して,タブを追加することで,小さい地面に2階建て,3階建ての家を建てるようにページを追加していくことができます。
図5のGroupBoxは,回収方法をまとめている例です。RadioButtonが三つグループ化されています。GroupBox内のRadioButtonは,必ず択一になります。
図5●GroupBox内のRadioButtonは自動的に択一になる(図4参照) |
すなわち,銀行振込にチェックを付けると,それ以前にチェックされていたい項目が自動的にオフになります。プログラムでコントロールする必要がないので楽チンです。
|