我试图构建一个包含tablelayoutpanel的usercontrol。在这个面板中我需要动态添加3列,每列有不同的宽度和5行,所有shell都有相同的高度(tablelayoutpanel高度的20%)。
column1的绝对宽度应为20, column2取决于其内容的宽度(带.dock = fill的文本框) column3的宽度为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
End Sub
样式&行是Usercontrol的属性。
但结果永远不会像我想要的那样。任何想法?
答案 0 :(得分:5)
任何与之斗争的人:
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