2012-03-29 34 views
1

我有以下代碼列大小:問題使用TableLayoutPanel中

 var tlp = new TableLayoutPanel 
         { 
          Location = new Point(0, 0), 
          Name = "TableLayoutPanel1", 
          Dock = DockStyle.Fill, 
          BackColor = Color.White, 
          TabIndex = 0 
         }; 

     Controls.Add(tlp); 

     tlp.RowStyles.Add(new RowStyle(SizeType.Absolute, 14f)); 
     tlp.RowStyles.Add(new RowStyle(SizeType.Absolute, 18f)); 
     tlp.RowStyles.Add(new RowStyle(SizeType.Absolute, 12f)); 
     tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 100f)); 
     tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 50f)); 

     var label3 = new Label 
     { 
      Font = new Font("Tahoma", 8, FontStyle.Regular), 
      Text = Description, 
      AutoSize = false, 
      Width=50, 
      ForeColor = Color.Black, 
      TextAlign = ContentAlignment.TopLeft 
     }; 
     tlp.Controls.Add(label3, 1, 2); 

我的問題是,當我運行我的應用程序,沒有什麼顯示。如果我更改最後一行顯示在第一列,如下所示:

 tlp.Controls.Add(label3, 0, 2); 

然後它在第一列中顯示出來就好了。此外,如果我將ColumnStyle的定義更改爲SizeType.Percentage而不是Absolute,那也可以正常工作,但我不想要一個百分比,我希望左側有100像素固定列,右側有50像素固定列。

有人可以指出我在這方面的正確方向嗎?

回答

2

您還必須設置RowCount和ColumnCount屬性。奇怪,我知道。

所以:

tlp.RowCount = 3; 
tlp.ColumnCount = 2; 
+0

哇,這是我的問題。不能相信你必須把它看成是它應該能夠通過我實際添加的許多行或列來找出它。 – Icemanind 2012-03-29 03:18:27

+0

是的,你會認爲它只會通過添加到集合中起作用。好吧。 – quip 2012-03-29 03:20:16

0

我花了很長的時間來想出解決辦法:

添加Columnstyles和Rowstyles是不夠的,你必須設置列數和行數,以及,如上所述。但是...

設置RowCount和ColumnCount是不夠的!您還需要添加Columnstyles和Rowstyles。

我想,我終於拿到了這個組件想通了......

巴斯