2013-07-23 3 views
1

im пытается создать пользовательский элемент управления, содержащий таблицу tablelayoutpanel. в этой панели мне нужно динамически добавлять 3 столбца, каждый из которых имеет разную ширину и 5 строк, каждая оболочка которых имеет ту же высоту (20% от высоты таблицы tablelayoutpanel).Таблицы и столбцы TableLayoutPanel во время выполнения

столбец1 должны иметь абсолютную ширину 20, столбец2 в зависимости от ширины его содержимого (текстовое поле с .dock = заливки) Столбец3 ширину 30.

мой код:

Private Sub BuildGUI() 
    If Rows > 0 Then 

     tlp.Controls.Clear() 
     tlp.ColumnStyles.Clear() 
     tlp.RowStyles.Clear() 


     If Style = Styles.Adding Then 
      tlp.ColumnStyles.Add(New ColumnStyle(SizeType.Absolute, 30)) 
      tlp.ColumnStyles.Add(New ColumnStyle(SizeType.Autosize)) 
      tlp.ColumnStyles.Add(New ColumnStyle(SizeType.Absolute, 20)) 
      tlp.ColumnCount = 3 

      tlp.RowStyles.Add(New RowStyle(SizeType.AutoSize, 20%)) 
      tlp.RowStyles.Add(New RowStyle(SizeType.AutoSize, 20%)) 
      tlp.RowStyles.Add(New RowStyle(SizeType.AutoSize, 20%)) 
      tlp.RowStyles.Add(New RowStyle(SizeType.AutoSize, 20%)) 
      tlp.RowStyles.Add(New RowStyle(SizeType.AutoSize, 20%)) 
      tlp.RowCount = Rows 

      For i = 0 To Rows - 1 
       Dim L As New Label 
       Dim T As New TextBox 
       Dim C As New CheckBox 

       With L 
        .BackColor = Color.Aqua 
        '.Dock = DockStyle.Fill 
        .Visible = True 
        .BorderStyle = Windows.Forms.BorderStyle.FixedSingle 
        .Font = New Font("Microsoft Sans Serif", 11, FontStyle.Bold) 
       End With 
       tlp.Controls.Add(L, 0, i) 

       With T 
        .BackColor = Color.Beige 
        .Visible = True 
        .Multiline = True 
        .ScrollBars = ScrollBars.Vertical 
        .Dock = DockStyle.Fill 
       End With 
       tlp.Controls.Add(T, 1, i) 

       With C 
        .Visible = True 
        .BackColor = Color.Brown 
       End With 
       tlp.Controls.Add(C, 2, i) 

      Next 
     Else 

     End If 

    End If 

Конец Sub

Стили & Строки являются свойствами Usercontrol.

, но результат никогда не будет таким, каким я хочу. есть идеи?

ответ

4

для всех, кто борется с такой же:

Private Sub BuildGUI() 
    If Rows > 0 Then 

     tlp.Controls.Clear() 
     tlp.ColumnStyles.Clear() 
     tlp.RowStyles.Clear() 

     If Style = Styles.Adding Then 
      tlp.ColumnStyles.Add(New ColumnStyle(SizeType.Absolute, 30)) 
      tlp.ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 80%)) 
      tlp.ColumnStyles.Add(New ColumnStyle(SizeType.Absolute, 50)) 
      tlp.ColumnCount = 3 


      For i = 0 To Rows - 1 
       tlp.RowStyles.Add(New RowStyle(SizeType.Percent, 100/Rows)) 

       Dim L As New Label 
       Dim T As New TextBox 
       Dim C As New CheckBox 

       With L 
        .Text = Chr(65 + i) 
        .TextAlign = ContentAlignment.MiddleCenter 
        .Visible = True 
        .Font = New Font("Microsoft Sans Serif", 11, FontStyle.Bold) 
        .Dock = DockStyle.Fill 
       End With 
       tlp.Controls.Add(L, 0, i) 

       With T 
        .Name = "txt" & Chr(65 + i) 
        .Visible = True 
        .Multiline = True 
        .ScrollBars = ScrollBars.Vertical 
        .Dock = DockStyle.Fill 
       End With 
       tlp.Controls.Add(T, 1, i) 

       With C 
        .Name = "chk" & Chr(65 + i) 
        .CheckAlign = ContentAlignment.MiddleCenter 
        .Visible = True 
        .BackColor = Color.LightGray 
        .Dock = DockStyle.Fill 
       End With 
       tlp.Controls.Add(C, 2, i) 

      Next 

     Else 

     End If 

    End If 
End Sub