2017-10-28 15 views
1

このレイアウトを作成しようとしています。これまでのところ、私はDockStyle.Leftを使って1番目のパネルを行うことができました。しかし、私は2番目を追加しようとすると、1番目のものが重なってしまいます。また、パネルを追加/管理する最善の方法は何でしょうか.3番目のパネルを追加すると、両方のパネルがUIの高さの半分になります。Windowsフォームサイドパネルと分割水平パネルレイアウト

enter image description here

私がドロップし、ドラッグツールを使用することを避けるためにしたいと思います。私のパネルで

コードは、これまで:

Panel backPanel = new Panel(); 
backPanel.Dock = DockStyle.Fill; 

Panel panel1 = new Panel(); 
panel1.Dock = DockStyle.Left; 
panel1.BackColor = Color.Red; 

Panel panel2 = new Panel(); 
panel2.Dock = DockStyle.Top; 
panel2.BackColor = Color.Cyan; 

backPanel.Controls.Add(panel1); 
backPanel.Controls.Add(panel2); 
this.Controls.Add(backPanel); 

答えて

1

コントロールは、フォームのZ軸(奥行き)に沿って、フォーム上のコントロールの視覚的なレイヤーである彼らのZ-ため、にドッキングされています。 [MSDN]

だから、コンテナにコントロールを追加する順序は重要です。たとえば、あなたの期待のレイアウトを取得するために、あなたは、この他にコントロールを追加することができます

var panel1 = new Panel() { BackColor = Color.Red, Dock = DockStyle.Left }; 
var panel2 = new Panel() { BackColor = Color.Green, Dock = DockStyle.Top }; 
var panel3 = new Panel() { BackColor = Color.Blue, Dock = DockStyle.Fill }; 
this.Controls.AddRange(new[] { panel3, panel2, panel1 }); 

注:

  • あなたには、いくつかの動的なUIを作成している場合を除き、Windowsフォームのデザイナを使用しないようしないでください実行時にカスタムロジックに基づいて実行されます。
  • デザイナーを使用している場合は、ドキュメントアウトラインウィンドウを使用して、コントロールのZ-インデックスを変更することができます。ウィンドウを表示するには、ビュー→その他のウィンドウ→文書概要にアクセスしてください。
  • デザイナを使用している場合は、を背中とレイアウトツールバーまたはコントロール上で右クリックでからフロントコマンドに持参する送信を使用することができます。
  • コードを使用すると、コントロールのSendToBackおよびBringToFromメソッドを使用して前面に表示したり、すべてのコントロールの背面に送信したりできます。
  • コードを使用すると、コンテナコントロールのSetChildIndexメソッドを使用して、コントロールのZ-インデックスを設定できます。
  • 別のオプションとして、2つのSplitContainerコントロールを混在させることもできます。
関連する問題