2行2列です。両方のセルの最後の列を1つにマージする必要があります。要件により、他のデザインオプションを使用しないということは、最初のテーブルレイアウトに2つの行がある2つのテーブルレイアウトを意味します。私はC#でWinformsを使用しています。
| | |
| | |
| | |
|_______________________| |
| | |
| | |
| | |
http://msdn.Microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.aspx
たとえば、TableLayoutPanelコントロールでRowSpan popertyを設定できます。
コードでそれを行う方法は次のとおりです
//create a label control, add it to the tableLayoutPanel, and merge it into 3 cells.
Label lbl = new Label();
lbl.Location = new Point(0, 0);
lbl.Text = "This is a test label";
MyTableLayoutPanel.Controls.Add(lbl, 0,0); //start it in cell 0,0
MyTableLayoutPanel.SetColumnSpan(lbl, 3); //merge 3 columns
ここでセルの結合のタイトルを見ることができます。
ColumnSpan / RowSpan プロパティを設定する代わりに、別の TableLayoutPanel のセル内に TableLayoutPanel を追加できます。 2つのセルをマージする代わりに、2つのセルを分割します。質問で提供する例では、右の列を1行にマージする代わりに、左の列を2行に分割します。
このメソッドは、 CellBorderStyle プロパティを " None "以外に設定する場合にのみ有効です。私はこの答えを見つけました here 、ここで CSharpFreak はまた別の方法を示唆していますが、私は試しませんでした。
次のコードを使用すると、目的の数の行/列にコントロールを広げることができます
TableLayoutPanel tableLayoutPanel1 = new TableLayoutPanel(); // not required if you already have the control added else where or in designer.
TextBox textBox1 = new TextBox(); // not required if you already have the control added else where or in designer.
tableLayoutPanel1.Controls.Add(textBox1);// not required if you already have the control added else where or in designer.
tableLayoutPanel1.SetColumnSpan(textBox1, 2);
tableLayoutPanel1.SetRowSpan(textBox1, 2);
テーブルでマージを開始するセルのコントロールのRowSpanプロパティを設定します。つまり、RowSpanが3の場合、コントロールはそのセルとその下の2つのセルを塗りつぶします。
ColumnSpanを右にマージします。
コードで、SetRowSpanメソッドまたはSetColumnSpanメソッドを呼び出します。
このような「マージ」プロパティをコントロールに設定できます。
コントロールがLabel
であり、行をマージする場合、次のように実行できます。
TableLayoutPanel table = new TableLayoutPanel();
Label lbl = new Label();
lbl.Text = "test";
lbl.Dock = DockStyle.Fill;
table.Controls.Add(lbl, 0, 0); //initial position
table.SetRowSpan(lbl,2);