.NET & Control > Formとコンテナ(Container)コントロール
のぶ亭『プログラミングの相談窓口』 … 様々なプログラミング問題を個別対応致します |
Formとコンテナ
コンテナとは、子コントロールを管理する器のことです。もちろん、Formもコンテナです。コンテナには、コンテナを含めて多階層な構造にすることができます。
コンテナの主目的は、コントロールのグループ化です。コンテナの位置を変更した場合、そのコンテナに含まれる子コントロールも連動します。
共通事項
コントロールのグループ化
- 複数のコントロールを管理(一括で有効化/無効化など)する
- 配置は、子コントロールのLocationプロパティで決定
- コンテナ内のラジオボタンは、内部でグループを構成(他コンテナとは分離される)
- GroupBoxを移動すると、子コントロールも移動する(原則レイアウトは崩れない)
- 子コントロールの情報は、[Controls]プロパティによりControl インスタンスのコレクションを取得できる(取得したコントロールを特定の型にキャストする必要がある)
子コントロールにコンテナも貼り付けることができる
コンテナは、他のコンテナに対してドッキングすることができる
Form
外観的特徴:キャプションバーと枠を持つ
FlowLayoutPanel
外観特徴:何も持たない
コンテナ内の子コントロールを、コンテナの領域を基準に自動で配置する。「水平」または「垂直」のフロー方向に配置する。
コントロールの内容は、ある行から次の行、またはある列から次の列に折り返すことができます。内容を折り返さずにクリップすることもできる。
[FlowDirection]プロパティでフロー方向を指定
フロー方向を右から左 (RTL) のレイアウトに正確に反転させます。
[WrapContents]プロパティで、子コントロールの内容を折り返すか、またはクリップするかを指定する
[AutoSize]プロパティ= True では、子コントロールのサイズを内容に合わせて自動的に調整する。子コントロールに対しては、[FlowBreak]プロパティ= True は、現在のフロー方向でのコントロールのレイアウトを中断し、次の行または列に折り返す。
任意の Windows フォーム コントロールを FlowLayoutPanel コントロールの子にできる。これは、FlowLayoutPanel の他のインスタンスを含む。この機能により、実行時にフォームの大きさに合わせた高度なレイアウトを構築できる。
GroupBox
外観特徴:グループボックスの特徴でもある「キャプション」と枠表示がある。
TabControl
外観特徴:タブ付きのコンテナ。デザイン時は、各タブを切り替えることで、、任意のタブコンテナにコントロールを配置することができる。
Windows フォーム TabControl (タブ コントロール) は、複数のタブを表示します。タブは、ノートの仕切りページやファイリング キャビネット内のフォルダを分類するラベルのようなものです。タブには画像やその他のコントロールを表示できます。タブ コントロールを使用すると、複数のページを持つダイアログ ボックスを作成できます。このようなダイアログ ボックスは、Windows オペレーティング システムで数多く使用されています (コントロール パネルから表示する [画面のプロパティ] ダイアログ ボックスなど)。さらに、TabControl を使用して、関連プロパティをグループ化するためのプロパティ ページを作成できます。
TabControl の使用
TabControl の主要プロパティは TabPages です。このプロパティは、個別のタブを保持します。個別のタブは TabPage オブジェクトです。タブがクリックされると、その TabPage オブジェクトの Click イベントが発生します。
タブの方向を変える
プロパティ Alignment = Top
プロパティ Alignment = Buttum
プロパティ Alignment = Left
プロパティ Alignment = Right
Panel
外観特徴:何も持たない
スクロール機能により、Form領域を超えるコントロールの配置が可能。
主要なプロパティ
スクロール バーを表示するには、AutoScroll プロパティを真 (true) に設定します。
BackColor、BackgroundImage、およびBorderStyle の各プロパティを設定して、パネルの表示形式をカスタマイズすることもできます。
BorderStyle プロパティを使用すると、パネルのアウトラインを非可視の境界線 (None)、単線 (FixedSingle)、または影付き線 (Fixed3D) のいずれかに設定できます。
TableLayoutPanel
外観特徴:何も持たない
メリット
Wordの表(テープル)やHTMLのテーブルタグと同等の機能を持ち、レイアウトを柔軟に構築するためのコンテナである。TableLayoutPanelの多重入れ子階層とセルの連結機能を使って、複雑な画面構造を柔軟に構築することができる。
一般的なフリーサイズの画面は、子コントロールのレイアウトが(できるだけ)崩れないように、プログラムで調整することになる。これをTableLayoutPanelでデザインすることにより、煩わしい計算を行って子コントロールの配置制御から解放される。
仕組み
TableLayoutPanelはは、行×列の個数のセルを持つ。一つのセルに、一つのコントロールを貼り付けることができる。
行および列は、それぞれ絶対値や相対値で領域を設定することができる。その結果、個々のセル領域を決定される。レイアウトは、デザイン時と実行時の両方をサポートしているため、アプリケーション環境に応じて、動的に変更・制御することが可能。
行数と列数、高さと幅は、動的に拡張したり変更したりすることが可能。
TableLayoutPanel コントロールは、子コントロールにに対して、Cell(Column、Row)、ColumnSpan、RowSpan の各プロパティを追加する。
子コントロールで ColumnSpan プロパティまたは RowSpan プロパティを設定すると、TableLayoutPanel コントロールのセルを結合できます。
通常のボタンの配置カテゴリプロパティ
TableLayoutPanel のセルにボタンを貼り付けると、ボタンの配置カテゴリプロパティは以下の様になる
セル内に子コントロールを貼り付けると、子コントロールの配置カテゴリに★印のついた項目が自動で追加される。
Cell(Column、Row)は、子コントロールはTableLayoutPanelのどの列と行に属しているかがわかる。このプロパティで変更することも可能。
RowSpan=2にした場合(下図は、ボタンのDockプロパティはFillに設定したイメージ)
CellSpan=2にした場合(下図は、ボタンのDockプロパティはFillに設定したイメージ)
RowSpan=2、CellSpan=2にした場合
(下図は、ボタンのDockプロパティはFillに設定したイメージ)
TableLayoutPanelのセルにTableLayoutPanelを貼り付ける
貼り付けた後
SplitContainer
Windows フォームの SplitContainer コントロールは、移動できるバーによって分割された 2 つのパネルから成る複合コントロールと考えることができます。マウス ポインタをバーの上に置くと、ポインタが変形し、そのバーを移動できることが示されます。
重要 :
ツールボックスでは、以前のバージョンの Splitter コントロールが、SplitContainer
コントロールに置き換えられました。新しいプロジェクトに対しては、SplitContainer
コントロールを使用することを強くお勧めします。
SplitContainer コントロールを使用すると、複雑なユーザー インターフェイスを作成できます。多くの場合、1 つのパネルで選択した項目によって、他のパネルで表示されるオブジェクトが決まります。この配置は、情報の表示と参照には非常に有効です。2 つのパネルを用意することで、領域に情報を集約でき、さらに、バーまたは "分割線" により、ユーザーが簡単にパネルのサイズを変更できます。
第 2 の SplitContainer コントロールを水平方向に配置した状態で、複数の SplitContainer コントロールを入れ子にして、上部のパネルと下部のパネルを作成することもできます。
既定では、SplitContainer コントロールにはキーボードからアクセスできます。
IsSplitterFixed プロパティが false に設定されていれば、ユーザーは方向キーを押して分割線を移動できます。
SplitContainer コントロールの Orientation プロパティは、コントロール自体の方向ではなく、分割線の方向を指定します。そのため、このプロパティが Vertical に設定されているときは、上から下に向かって分割線が作成され、左パネルと右パネルが作成されます。
また、SplitterRectangle プロパティの値は、Orientation プロパティの値に応じて決定されることに注意してください。詳細については、「SplitterRectangle プロパティ」を参照してください。
SplitContainer コントロールのサイズと移動を制限することもできます。FixedPanel プロパティでは、SplitContainer コントロールのサイズを変更した後に同じサイズのままで維持するパネルが決定され、IsSplitterFixed プロパティでは、分割線がキーボードまたはマウスによって移動できるかどうかが決定されます。
ToolStripContainer
基本的には、Formに貼り付けるToolStripを管理するコンテナである
他のコンテナに貼り付ける場合
ToolStripContainer には、ToolStrip、MenuStrip、および StatusStrip の各コントロールの配置およびラフティングのためのパネルが、上下左右のそれぞれの側にあります。
複数の ToolStrip コントロールを左右の ToolStripContainer に配置すると、コントロールは垂直方向に積み重ねられます。上または下の ToolStripContainer に配置すると、コントロールは水平方向に積み重ねられます。ToolStripContainer の中央の ToolStripContentPanel を使用すると、従来のコントロールをフォーム上に配置できます。
すべての ToolStripContainer コントロールは、デザイン時に直接選択して削除できます。ToolStripContainer の各パネルは展開および折りたたみが可能で、内部のコントロールに合わせてサイズ調整されます。