나는 지난주에 이것을했다. 설정 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;