.NET TIPS

VS.NETでSplitterコントロールを配置するには?

デジタルアドバンテージ 遠藤 孝信
2005/03/18

 Splitterコントロール(スプリッタ・コントロール)は、Windowsフォームを分割するためのもので、フォーム上のコントロールとコントロールの間に配置し、実行時にマウスで移動することにより、それぞれのコントロールのサイズを変更できる。

 例えばエクスプローラでは、フォーム左側にあるツリー表示部分と、フォーム右側にあるファイル表示部分の間にSplitterコントロールが使用されており、それをマウスで移動させることにより、両部分のサイズを変更できる。

エクスプローラで使用されているSplitterコントロール
Splitterコントロールをマウスで移動させることにより、それに隣接しているコントロールのサイズを変更できる。

 Splitterコントロールは、ほかのテキストボックスやボタンなどの一般的なコントロールとデザイン時の配置方法が少し異なるため、本稿ではこれについてまとめる。

Splitterコントロールの配置手順

 Splitterコントロールの基本的な動作は、そのドッキング位置と同じ位置(同じ方向)にドッキングしている、隣接するコントロールのサイズを変更するというものである(コントロールのドッキング位置は、Dockプロパティにより設定される)。このためデザイン時にはまず、DockプロパティがLeft、Right、Top、Bottomのいずかに設定されたコントロールを配置し、それに続けて同じDockプロパティの値を持つSplitterコントロールを配置することになる。

 例えば、エクスプローラのように2つのコントロールを横に並べる場合には、まず左側にくるコントロールを配置し、そのDockプロパティを「Left」(コード上では「DockStyle.Left」)に設定してからサイズを調整する。そしてフォーム上にSplitterコントロールをドラッグ&ドロップする。

コントロールに隣接するようにSplitterコントロールを配置したフォーム
まず「Dock=Left」のTextBoxコントロールを配置し、続けてSplitterコントロールを配置する(Splitterコントロールはデフォルトで「Dock=Left」となっている)。なお、以降の画面ではすべてTextBoxコントロールのMultilineプロパティをtrueに設定している。

 SplitterコントロールのDockプロパティはデフォルトで「Left」になっているため、ツールボックスからドラッグ&ドロップしたSplitterコントロールは、直前に「Dock=Left」で配置されたテキストボックスに隣接する形で配置される。

 そして、空いている右側部分に、その領域いっぱいにコントロールを配置するために、「Dock=Fill」のコントロールを配置する。

デザインが完成したフォーム
Splitterコントロールの配置に続けて、右側部分に「Dock=Fill」のTextBoxコントロールを配置している。

Splitterコントロールによるフォームの3分割

 上記のフォームで、右側の部分をさらに縦方向に2分割する場合には、まずSplitterコントロールの次に配置したコントロールのDockプロパティを「Top」に変更する。次に、2つ目のSplitterコントロールを配置し、Dockプロパティを同じく「Top」に設定する(これによりSplitterコントロールの向きは水平方向になる)。

Splitterコントロールにより3分割したフォーム
「Dock=Top」のTextBoxコントロールの配置に続けて、同じく「Dock=Top」のSplitterコントロールを配置したところ。

 そして空いた領域には先ほどと同様に「Dock=Fill」のコントロールを配置すればよい。

Splitterコントロールによるフォームの3分割(別パターン)

 左側の領域を縦方向に2分割する場合についても簡単に説明しておこう。この場合には、まずPanelコントロールを「Dock=Left」で配置し、続けてSplitterコントロールを配置する。Panelコントロールは、ほかのコントロールを格納するためのものだ。

PanelコントロールとSplitterコントロールを配置したフォーム
「Dock=Left」のPanelコントロールを配置し、続けてSplitterコントロールを配置する。ここでは分かりやすいようにPanelコントロールの背景色をピンク色にしている。

 次にPanelコントロール上に、「Dock=Top」と設定した別のコントロールを配置し、さらにPanelコントロール上に「Dock=Top」のSplitterコントロールを配置する。

Panelコントロール上に配置したSplitterコントロール
Panelコントロール上にはほかのコントロールを配置(格納)することができる。ここではまず「Dock=Top」のTextBoxコントロールを配置し、続けて「Dock=Top」のSplitterコントロールを配置している。

 最後に、空いている2つの領域に、それぞれ「Dock=Fill」のコントロールを配置すればフォームは完成だ。

デザインが完成したフォーム
空いている2つの領域に、「Dock=Fill」に設定したTextBoxコントロールを配置してフォームは完成。

 このような3分割のデザインは、最初に「Dock=Right」のコントロールを配置し、空いた領域を縦方向に2分割しても作成可能だが、実行時のフォームのリサイズによる挙動は当然ながら異なるものになる。End of Article

カテゴリ:Windowsフォーム 処理対象:Splitterコントロール
カテゴリ:Windowsフォーム 処理対象:Panelコントロール
使用ライブラリ:DockStyle列挙体(System.Windows.Forms名前空間)
 
この記事と関連性の高い別の.NET TIPS
Windowsフォーム上のすべてのコントロールを列挙するには?
[ASP.NET AJAX]AlwaysVisibleControlコントロールで常時表示されるパネルを定義するには?
[ASP.NET AJAX]PopupControlコントロールで標準コントロールにポップアップ機能を追加するには?
WindowsアプリケーションをWindows XPスタイルの外観にするには?
スクロールバー付きでPictureBoxコントロールに画像に表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間