私は先週これをしました。をまたはに設定するGrowStyle
と、コードが機能するはずです。TableLayoutPanel
AddRows
AddColumns
myTableLayoutPanel.Controls.Add(myControl1, 0 , 0 );
myTableLayoutPanel.Controls.Add(myControl2, 0 , 1 );
myTableLayoutPanel.Controls.Add(myControl3, 0 , 2 );
これがあなたがしていることに似ているように見えるいくつかの実用的なコードです:
private Int32 tlpRowCount = 0;
private void BindAddress()
{
Addlabel(Addresses.Street);
if (!String.IsNullOrEmpty(Addresses.Street2))
{
Addlabel(Addresses.Street2);
}
Addlabel(Addresses.CityStateZip);
if (!String.IsNullOrEmpty(Account.Country))
{
Addlabel(Address.Country);
}
Addlabel(String.Empty);
}
private void Addlabel(String text)
{
label = new Label();
label.Dock = DockStyle.Fill;
label.Text = text;
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
tlpAddress.Controls.Add(label, 1, tlpRowCount);
tlpRowCount++;
}
TableLayoutPanel
いつも私は、サイズとフィットできます。上記の例では、住所行が2つあるアカウント、または国によって拡大または縮小する可能性のある住所カードを提出しています。テーブルレイアウトパネルの最後の行または列が伸びるので、そこに空のラベルを投げて新しい空の行を強制すると、すべてがうまく整列します。
これがデザイナーコードですので、私が始めた表を見ることができます:
this.tlpAddress.AutoSize = true;
this.tlpAddress.BackColor = System.Drawing.Color.Transparent;
this.tlpAddress.ColumnCount = 2;
this.tlpAddress.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.tlpAddress.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tlpAddress.Controls.Add(this.pictureBox1, 0, 0);
this.tlpAddress.Dock = System.Windows.Forms.DockStyle.Fill;
this.tlpAddress.Location = new System.Drawing.Point(0, 0);
this.tlpAddress.Name = "tlpAddress";
this.tlpAddress.Padding = new System.Windows.Forms.Padding(3);
this.tlpAddress.RowCount = 2;
this.tlpAddress.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpAddress.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpAddress.Size = new System.Drawing.Size(220, 95);
this.tlpAddress.TabIndex = 0;