2012-03-29 2 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

+0

Да, вы бы подумали, что это сработает, просто добавив в коллекцию. Ну что ж. – quip

0

Это заняло у меня много времени, чтобы понять это:

добавить Columnstyles и RowStyles не достаточно, вы должны установить ColumnCount и сверку, а также, как описано выше. Но ...

Установка RowCount и ColumnCount тоже недостаточна! Вам также нужно добавить Columnstyles и Rowstyles.

Я думаю, что я, наконец, получил этот компонент разобрался ...

Bas