Windows フォームアプリケーションで、FlowLayoutPanelを使って様々なコントロールを水平に並べたり、垂直に並べたりすることができます。
例えば、FlowLayoutPanel内にPictureBoxコントロールを2つ配置して、2つともDockプロパティをFillに設定すると、「半々の大きさに制御されるのでは?」と考えましたが、浅はかな考えだったようです。
スポンサーリンク
FlowLayoutPanel内の2つのPictureBoxの大きさを揃えるには
FlowLayoutPanelコントロール内に配置した2つのPictureBoxの大きさを揃えるには次のようにそれぞれ大きさを設定する必要がります。なお、PictureBox.DockプロパティはNoneです。詳細はサンプル内のコメントを参照ください。
// FlowLayoutPanelコントロール自体は Dock = Fill this.flowLayoutPanel1.Dock = DockStyle.Fill; //フォームの最大化や最小化ボタンは非表示 this.FormBorderStyle = FormBorderStyle.None; // 最大化して、FlowLayoutPanelコントロールのサイズを確定させる this.WindowState = FormWindowState.Maximized; // 常に最前面に表示する場合に指定する // [注意!] // このコードをフォームロードイベントハンドラで記述して // ブレークポイントを設定すると超危険! //this.TopMost = true; // 水平に並べる this.flowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight; // PictureBox1のサイズを設定 // 5を減算しているのは、マージンやらパディングの影響(?)で // 2分割できなかったので、深く考えずに調整しただけ。 pictureBox1.Width = (this.flowLayoutPanel1.Width / 2) - 5; pictureBox1.Height = this.flowLayoutPanel1.Height - 5; // PictureBox2のサイズを設定 pictureBox2.Width = (this.flowLayoutPanel1.Width / 2) - 5; pictureBox2.Height = this.flowLayoutPanel1.Height - 5;
ちなみに、PictureBoxの代わりに WebBrouserコントロールでも試してみましたが、大きさを揃えるために、DockプロパティをFillに設定しても意味ありません。
PictureBoxコントロールと同じように、DockプロパティはNoneとし、サイズをそれぞれ設定す必要がありました。