2013-07-23 2 views
1

im은 tablelayoutpanel을 포함하는 usercontrol을 빌드하려고합니다. 이 패널에서 나는 동적으로 각 너비와 모든 껍질이 동일한 높이 (tablelayoutpanel의 높이의 20 %)를 갖는 5 개의 행을 갖는 3 개의 열을 추가해야합니다.런타임시 TableLayoutPanel 행 및 열

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 
:

, 컬럼 (20)의 절대 폭을 가져야 콘텐츠 (.dock = 채우기 텍스트 상자) 의 폭을 따라 2 열은 30

내 코드의 폭을 COLUMN3

End 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