方法 : ドッキングの動作を制御する
更新 : 2007 年 11 月
コントロールをフォームに追加する順序によって、ドッキング機能を使用するときに画面上の各コントロールのレイアウトが影響を受ける可能性があります。コントロールを正しい順序で追加しないと、画面上の目的の位置にコントロールが表示されない場合があります。
コントロールをフォームに追加する順序によって z オーダーが変わります。親コントロール内の複数のコントロールをドッキングするときのレイアウト方法は、この z オーダーによって決まります。親コントロールに最初に追加するコントロールが z オーダーの一番下に配置され、それ以降に追加するコントロールは順にその上の層に配置されます。1 つのコントロールと別のコントロールをドッキングして親コントロール内の同じ領域に配置する場合、最終的なレイアウトでは z オーダーで後方にあるコントロールが優先されます。たとえば、2 つのコントロールの Dock プロパティを Top に設定すると、通常、z オーダーで後方にあるコントロールが、画面上の親コントロールで最前面に表示されます。
一方、コントロールの Dock プロパティを Fill に設定すると、1 つのコントロールによって別のコントロールが隠される可能性があります。たとえば、2 つのコントロールを誤った順序でフォームに追加すると両方が画面の最前面に表示されることがあり、その位置に 1 つのコントロールのみを配置するように指定している場合、一方のコントロールによってもう一方が隠されます。
レイアウト上の問題が発生する場合は、影響を受けるコントロールの z オーダーを調整する必要があります。デザイナを使用してコントロールをフォームに追加するかどうかに応じて、この問題の解決に必要な手順が異なります。
ドッキングのレイアウトを制御するには
関連するコントロールをフォームに追加する順序を修正します。
TreeView コントロールと Button コントロールをプログラムで Panel コントロールに追加する例について説明します。TreeView コントロールの Dock プロパティを Fill に設定し、Button コントロールの Dock プロパティを Top に設定します。TreeView コントロールによって Button コントロールの一部が隠されます。TreeView コントロールと Button コントロールを Panel に追加するコードは次のようになります。
this.panel1.Controls.Add(this.button1); this.panel1.Controls.Add(this.treeView1);
問題を解決するには、これらのコントロールをパネルに追加する順序を変更します。
this.panel1.Controls.Add(this.treeView1); this.panel1.Controls.Add(this.button1);
または、一方のコントロールで BringToFront メソッドまたは SendToBack メソッドを使用します。
デザイナを使用してドッキングのレイアウトを制御するには
フォーム上で正しくない位置に表示されるコントロールの 1 つを選択します。
目的のレイアウトに応じて、コントロールを右クリックし、[最背面へ移動] をクリックします。
または
コントロールを右クリックし、[最前面へ移動] をクリックします。
この他に追加するコントロールがある場合は、ドッキングの動作が修正されるまで、必要に応じてそれらのコントロールに対して手順 2. を繰り返します。
メモ : |
---|
複数のコントロールを使用する場合は、ドキュメント アウトライン ウィンドウで z オーダーを制御することをお勧めします。 |