連載:Windowsフォーム開発入門【Visual Studio 2010対応】
Windowsフォーム・コントロールの基礎(その2) 初音 玲2010/09/14 |
|
|
■コンテナ
[ツールボックス]の[コンテナ]タブにあるコントロール群がほかのコントロールと違うのは、自分自身の領域内に別のコントロールを配置してグループ化するためのものだということである。コンテナにコントロールを配置するには、コントロールをドラッグしてきてコンテナ領域でドロップすればよい。もちろん[ツールボックス]からだけではなく、すでにフォーム上に配置してあるコントロールをドラッグしてきてもコンテナに配置できる。VB6までは、フォーム上に配置したコントロールをコンテナに配置するときには、コントロールをコンテナにカット&ペーストしなければならなかった。それに比べて非常に使いやすい操作性を実現している。
●FlowLayoutPanelコントロール
FlowLayoutPanelコントロール(以下、FlowLayoutPanel)は配置したコントロールを水平または垂直方向に整列させるコントロールだ。FlowLayoutPanelにコントロールをドラッグ&ドロップすると、FlowLayoutPanelのFlowDirectionプロパティの値に応じて強制的に整列が行われる。
●GroupBoxコントロール
GroupBoxコントロール(以下、GroupBox)は、ガイドラインでは「グループ・ボックス」として規定されているコントロールで、関連する複数のコントロールをラベル付きの四角い枠で囲むUI(図12参照)を作成したいときに使用する。
GroupBoxを使ったデザインでGroupBoxの中にGroupBoxが配置されたデザインを見かけることがあるが、デザインガイドによれば「GroupBoxの中にGroupBoxは配置しないように」と規定されている。GroupBoxを入れ子にするのではなく、コントロール間の余白を調整してGroupBox内のコントロールの関連性を示すのがよいとされている。
図12 GroupBoxの例 |
●Panelコントロール
Panelコントロール(以下、Panel)は、関連する複数のコントロールをグループ化するときに使用する。GroupBoxと異なるのは、キャプションがなかったり、囲み線を非表示にしたりできる点だ。
実行時のPanelは(デフォルトでは)囲み線がないので、グループ化している範囲が不明確だ。そのため、視覚的にグループ化するときには使えない。実際の開発でPanelを使うのは、フォームの最下行にPanelを配置(=Dockプロパティに「Buttom」を設定)し、そこにコマンド用のButtonコントロールを配置しておき、フォームの上部にはDataGridViewコントロールなどを全表示(=Dockプロパティを「Fill」を設定)するデザインを実現するようなときだろう(図13参照)。このようにデザインすれば、フォームの大きさを変えてもコマンド用のButtonコントロールの配置領域を保つことができる。
図13 Panelの例 |
●SplitContainerコントロール
SplitContainerコントロール(以下、SplitContainer)は2分割した領域を管理するのに使用する。SplitContainerの詳しい使い方は「第2回 Windowsフォーム用テンプレートに学ぶ画面の作り方」の「『エクスプローラーフォーム』テンプレート」にて取り上げているのでそちらを参照してほしい。
●TabControlコントロール
TabControlコントロール(以下、TabControl)は、ガイドラインでは「タブ」として規定されているコントロールで、関連する情報を個別ページにまとめたUIを作成したいときに使用する。
図14 TabControlの例 |
TabControlのタブは水平タブと垂直タブがある(図15参照)。タブが7個以下の場合は水平タブとして横にタブが並ぶようにして、タブが8個以上の場合は垂直タブを使用して縦にタブが並ぶようなデザインがガイドラインでは推奨されている。これは、水平タブでタブを多数配置するとタブの横スクロールが必要になるが横スクロールは分かりづらいという評価に基づくものだ。
図15 水平タブ(左)と垂直タブ(右) |
しかし、残念ながらTabControlでは垂直タブでスクロールが行えないため、ガイドラインの推奨内容を実現できない*1。よって、TabControlを使うのであれば水平タブ前提の方がまだデザイン的には洗練されていると思う。
*1 オーナー・ドロー(=独自のコントロールの描画)を駆使すれば可能かもしれないが、技術レベルが本連載の範囲から逸脱すると思われるので、オーナー・ドローでスクロール付き垂直タブが実現できるかは、筆者は調査していない。 |
なお、TabControlもGroupBoxと同様に「入れ子にして使用しないように」とガイドラインに規定されている。
●TableLayoutPanelコントロール
TableLayoutPanelコントロールは、HTMLの<table>タグのようにコントロールの中を行と列で碁盤の目のように区切り、それぞれのマス目にコントロールを配置するために使用する。TableLayoutPanelの詳しい使い方は「第2回 Windowsフォーム用テンプレートに学ぶ画面の作り方」の「『スプラッシュ スクリーン』テンプレート」にて取り上げているのでそちらを参照してほしい。
■まとめ
Windowsフォーム用コントロールの2回目となる今回は、メニュー、ツールバー、ダイアログ、コンテナなど、使い方を知っていると一味違うデザインを実現できるコントロールを中心に取り上げた。前回紹介したコモン・コントロールと比べると多少地味なコントロールが多いが、“使わず嫌い”で使わずにいるのではなく、効果的に使っていきたいコントロールも多いので、ぜひ活用してほしい。
INDEX | ||
[連載]Windowsフォーム開発入門【Visual Studio 2010対応】 | ||
Windowsフォーム・コントロールの基礎(その2) | ||
1.メニューとツールバー | ||
2.ダイアログ | ||
3.コンテナ | ||
「Windowsフォーム開発入門」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -