一部のアプリケーションでは、フォームのサイズが変更されたり、コンテンツのサイズが変わると適切に配置されるレイアウトを含むフォームが必要です。 動的レイアウトが必要で、コードで Layout イベントを明示的に処理しない場合は、レイアウト パネルの使用を検討してください。
FlowLayoutPanel コントロールと TableLayoutPanel コントロールは、フォーム上にコントロールを配置する直感的な方法を提供します。 どちらも、子コントロールに含まれる子コントロールの相対位置を制御する、構成可能な自動機能を提供し、両方とも実行時に動的レイアウト機能を提供するため、親フォームのサイズ変更に合わせて子コントロールのサイズを変更したり、位置を変更したりできます。 レイアウト パネルをレイアウト パネル内に入れ子にして、高度なユーザー インターフェイスを実現できます。
TableLayoutPanel は、その内容をグリッド内に配置し、HTML <テーブル> 要素と同様の機能を提供します。 そのセルは行と列に配置され、サイズが異なる場合があります。 詳細については、「チュートリアル: TableLayoutPanelを使用した Windows フォームでのコントロールの配置」を参照してください。
FlowLayoutPanel は、コンテンツを特定のフロー方向 (水平方向または垂直方向) に配置します。 ある行から次の行、またはある列から次の列に内容をラップすることができます。 または、その内容をラップする代わりにクリップすることもできます。 このチュートリアルで説明するタスクは次のとおりです。
Windows フォーム プロジェクトの作成
コントロールを水平方向および垂直方向に配置する
フロー方向の変更
フロー区切りの挿入
パディングと余白を使用したコントロールの配置
ツールボックスでコントロールをダブルクリックしてコントロールを挿入する
アウトラインを描画してコントロールを挿入する
キャレットを使用したコントロールの挿入
既存のコントロールを別の親に再割り当てする
完了すると、これらの重要なレイアウト機能によって果たされる役割を理解できるようになります。
プロジェクトを作成する
Visual Studio で、"FlowLayoutPanelExample" (File>New>Project>Visual C# または Visual Basic>Classic Desktop>Windows フォーム アプリケーション) という名前の Windows ベースのアプリケーション プロジェクトを作成します。
フォーム デザイナーでフォームを選択します。
コントロールを水平方向および垂直方向に配置する
FlowLayoutPanel コントロールを使用すると、個々のコントロールの位置を正確に指定しなくても、行または列に沿ってコントロールを配置できます。
FlowLayoutPanel コントロールは、親フォームの寸法の変更に応じて、子コントロールのサイズを変更したり、リフローしたりすることができます。
FlowLayoutPanel を使用してコントロールを水平方向と垂直方向に配置するには
FlowLayoutPanel からフォームに コントロールをドラッグします。
Button から に FlowLayoutPanel コントロールをドラッグします。 FlowLayoutPanel コントロールの左上隅に自動的に移動されることに注意してください。
Button から別の コントロールを FlowLayoutPanelにドラッグします。 Button コントロールは、最初の Button コントロールの横の位置に自動的に移動されることに注意してください。 FlowLayoutPanel が狭すぎて同じ行の 2 つのコントロールに収まらない場合、新しい Button コントロールは自動的に次の行に移動されます。
Button から に、さらに複数の FlowLayoutPanel コントロールをドラッグします。 次の行に折り返すまで、 Button コントロールを続けて配置します。
FlowLayoutPanel コントロールの WrapContents プロパティの値を
false
に変更します。 子コントロールが次の行にフローしなくなることにご注意ください。 代わりに最初の行に移動してクリップされます。FlowLayoutPanel コントロールの WrapContents プロパティの値を
true
に変更します。 子コントロールがまた次の行に折り返されるようになることにご注意ください。すべての FlowLayoutPanel コントロールが最初の列に移動されるまで、Button コントロールの幅を小さくします。
すべての FlowLayoutPanel コントロールが最初の行に移動されるまで、Button コントロールの幅を大きくします。 より大きな幅に合わせてフォームのサイズを変更する必要がある場合があります。
フロー方向の変更
FlowDirection プロパティを使用すると、コントロールを配置する方向を変更できます。 子コントロールは、左から右、右から左、上から下、または下から上に配置できます。
FlowLayoutPanel のフロー方向を変更するには
FlowLayoutPanel コントロールの FlowDirection プロパティの値を TopDownに変更します。 子コントロールは、コントロールの高さに応じて 1 つ以上の列に再配置されることに注意してください。
FlowLayoutPanel の高さが Button コントロールの列よりも短いサイズに変更します。 FlowLayoutPanel は、次の列にフローするように子コントロールを再配置します。 引き続き高さを小さくしていくと、子コントロールが次の列にフローしていくことにご注意ください。 FlowLayoutPanel コントロールの FlowDirection プロパティの値を RightToLeftに変更します。 子コントロールの位置が反転することにご注意ください。 FlowDirection プロパティの値を BottomUpに変更するときに、レイアウトを確認します。
フロー区切りの挿入
FlowLayoutPanel コントロールは、その子コントロールに FlowBreak プロパティを提供します。 FlowBreak プロパティの値を true
に設定すると、FlowLayoutPanel コントロールは現在のフロー方向のコントロールのレイアウトを停止し、次の行または列に折り返されます。
フロー中断を挿入するには
FlowLayoutPanel コントロールの FlowDirection プロパティの値を TopDownに変更します。
左端の列の中央にある Button コントロールのいずれかを選択します。
Button コントロールの FlowBreak プロパティの値を
true
に設定します。 列が壊れ、選択した Button コントロールに続くコントロールが次の列に流れる点に注意してください。 元の動作に戻すには、Button コントロールの FlowBreak プロパティの値をfalse
に設定します。
ドッキングとアンカーを使用してコントロールの位置を決める
子コントロールのドッキングと固定の動作は、他のコンテナー コントロールの動作とは異なります。 ドッキングも固定も、フロー方向で最も大きいコントロールを基準として機能します。
ドッキングと固定を使用してコントロールを配置するには
FlowLayoutPanel コントロールがすべて列に配置されるまで、Button のサイズを大きくします。
上部の Button コントロールを選択します。 幅を大きくして、他の Button コントロールの約 2 倍の幅になるようにします。
2 番目の Button コントロールを選択します。 Anchor プロパティの値を Rightに変更します。 選択したコントロールが移動し、その右側の境界線が 1 番目の Button コントロールの右側の境界線と揃うことにご注意ください。
Anchor プロパティの値を Right および Leftに変更します。 これは、最初の Button コントロールと同じ幅にサイズ変更されることに注意してください。
3 番目の Button コントロールを選択します。 Dock プロパティの値を Fillに変更します。 これは、最初の Button コントロールと同じ幅にサイズ変更されることに注意してください。
パディングと余白を使用したコントロールの配置
FlowLayoutPanel プロパティと Padding プロパティを変更して、Margin コントロール内のコントロールを配置することもできます。
Padding プロパティを使用すると、FlowLayoutPanel コントロールのセル内でのコントロールの配置を制御できます。 子コントロールと FlowLayoutPanel コントロールの境界線の間隔を指定します。
Margin プロパティを使用すると、コントロール間の間隔を制御できます。
Padding プロパティと Margin プロパティを使用してコントロールを配置するには
FlowLayoutPanel コントロールの Dock プロパティの値を Fillに変更します。 フォームの大きさが十分にある場合、Button コントロールは FlowLayoutPanel コントロールの最初の列に移動します。
FlowLayoutPanel コントロールの Padding プロパティの値を変更するには、[ Padding ウィンドウで エントリを展開し、 All プロパティを 20に設定します。 詳細については、「チュートリアル: パディング、余白、および AutoSize プロパティを使用して Windows フォーム コントロールをレイアウトするを参照してください。 子コントロールは、FlowLayoutPanel コントロールの中心に移動されることに注意してください。 Padding プロパティの値を大きくすると、子コントロールが FlowLayoutPanel コントロールの境界線から遠ざけられます。
Button 内のすべての FlowLayoutPanel コントロールを選択し、Margin プロパティの値を 20に設定します。 Button コントロール間の間隔が長くなり、さらに離れて移動されることに注意してください。 すべての子コントロールを表示するには、FlowLayoutPanel コントロールのサイズを拡大することが必要な場合があります。
ツールボックスでコントロールをダブルクリックしてコントロールを挿入する
FlowLayoutPanelのコントロールをダブルクリックすることで、 コントロールにデータを入力できます。
ツールボックスでダブルクリックしてコントロールを挿入するには
Buttonの コントロール アイコンをダブルクリックします。 Button コントロールに新しい FlowLayoutPanel コントロールが表示されることに注意してください。
ツールボックスで、さらに複数のコントロールをダブルクリックします。 新しいコントロールは、FlowLayoutPanel コントロールに連続して表示されることに注意してください。
アウトラインを描画してコントロールを挿入する
FlowLayoutPanel コントロールにコントロールを挿入し、セルにアウトラインを描画してサイズを指定できます。
アウトラインを描画してコントロールを挿入するには
[ツールボックス]で、Button コントロール アイコンをクリックします。 フォームにドラッグしないでください。
マウス ポインターを FlowLayoutPanel コントロールの上に移動します。 ポインターが十字線に変わり、Button コントロール アイコンがアタッチされていることに注意してください。
マウス ボタンをクリックしたままにします。
マウス ポインターをドラッグして、Button コントロールのアウトラインを描画します。 サイズに問題がなければ、マウス ボタンを離します。 Button コントロールは、FlowLayoutPanel コントロールの次に開いている場所に作成されることに注意してください。
挿入バーを使用したコントロールの挿入
コントロールは、FlowLayoutPanel コントロール内の特定の位置に挿入できます。 コントロールを FlowLayoutPanel コントロールのクライアント領域にドラッグすると、コントロールが挿入される場所を示す挿入バーが表示されます。
キャレットを使用してコントロールを挿入するには
Button コントロールを ツールボックス から FlowLayoutPanel コントロールにドラッグし、2 つの Button コントロール間のスペースをポイントします。 挿入バーが描画され、Button を FlowLayoutPanel コントロールにドロップしたときに配置される位置が示されることに注意してください。 新しい Button コントロールを FlowLayoutPanel コントロールにドロップする前に、マウス ポインターを動かして挿入バーがどのように移動するかを確認します。
新しい Button コントロールを FlowLayoutPanel コントロールにドロップします。 Button プロパティの値が異なるため、新しい Margin コントロールは他のコントロールと一致しないことに注意してください。
既存のコントロールを別の親に再割り当てする
フォームに存在するコントロールを新しい FlowLayoutPanel コントロールに割り当てることができます。
既存のコントロールの親を変更するには
Button からフォームに 3 つの コントロールをドラッグします。 互いに近い位置に配置しますが、整列させないでおきます。
[ツールボックス]で、FlowLayoutPanel コントロール アイコンをクリックします。 フォームにドラッグしないでください。
マウス ポインターを 3 つの Button コントロールの近くに移動します。 ポインターが十字線に変わり、FlowLayoutPanel コントロール アイコンがアタッチされていることに注意してください。
マウス ボタンをクリックしたままにします。
マウス ポインターをドラッグして、FlowLayoutPanel コントロールのアウトラインを描画します。 3 つの Button コントロールの周囲にアウトラインを描画します。
マウス ボタンを離します。 3 つの Button コントロールが FlowLayoutPanel コントロールに挿入されることに注意してください。
次のステップ
レイアウト パネルとコントロールの組み合わせを使用して、複雑なレイアウトを実現できます。 その他の探索に関する推奨事項は次のとおりです。
Button コントロールの 1 つを大きなサイズに変更し、レイアウトに対する効果をメモします。
レイアウト パネルには、他のレイアウト パネルを含めることができます。 TableLayoutPanel コントロールを既存のコントロールにドロップして実験します。
FlowLayoutPanel コントロールを親フォームにドッキングします。 フォームのサイズを変更し、レイアウトに対する効果をメモします。
いずれかのコントロールの Visible プロパティを
false
に設定し、応答で FlowLayoutPanel がどのようにリフローされるかを確認します。
こちらも参照ください
.NET Desktop feedback