FlowLayoutPanelは、javaのFlowLayoutマネージャと同じく、決まった方向にコントロールを単純に
配置していくレイアウトです。
同じ行もしくは列に収まらない場合、改行して次の行・列に配置するかそのまま配置し続けるかを選べます。
ソース側で動的にコントロールを配置した利する際に、このレイアウトとTableLayoutPanelを良く使います。
主なプロパティは以下です。
- WrapContents --> 折り返すかどうかの設定
- FlowDirection --> コントロールを配置していく方向を設定
以下、サンプル.
////// コンポーネント情報を構築します。 /// protected void InitializeComponents(){ Text = GetType().Name; SuspendLayout(); // // FlowLayoutPanelの作成. // FlowLayoutPanel panel = new FlowLayoutPanel(); panel.Dock = DockStyle.Fill; // 配置方向は上から下 panel.FlowDirection = FlowDirection.TopDown; // 折り返す panel.WrapContents = true; Controls.Add(panel); // // ラベルとテキストボックスを縦に // いくつか配置する // for(int i = 0; i < 10; i++){ Label l = new Label(); l.Text = string.Format("label-{0}", i); TextBox t = new TextBox(); t.Text = string.Format("text-{0}", i); panel.Controls.Add(l); panel.Controls.Add(t); } ResumeLayout(); }
上記の場合、デフォルトのサイズのままフォームを表示しているので
入りきらずに次の列にコントロールが配置されていきます。
フォームのサイズを変え、入りきるサイズになると全てのコントロールが
縦に並びます。