Vb.net 意外的TableLayoutPanel行为
您好,自定义控件中的某些嵌套tablelayoutpanels存在一些问题 我知道我有一个tablelayoutpanel在一个tablelayoutpanel在一个tablelayoutpanel中,但它保持了它的统一性和有序性Vb.net 意外的TableLayoutPanel行为,vb.net,winforms,tablelayoutpanel,Vb.net,Winforms,Tablelayoutpanel,您好,自定义控件中的某些嵌套tablelayoutpanels存在一些问题 我知道我有一个tablelayoutpanel在一个tablelayoutpanel在一个tablelayoutpanel中,但它保持了它的统一性和有序性 自定义控件由2个TableLayoutPanel组成,它们位于窗体上的表布局面板和我的主窗体的预览区域中。 在设计时设置它们效果很好,但是动态地将具有1行2列的最上面的设置添加/删除到具有1列和x行的最下面的设置中,似乎打破了我所追求的自动调整大小行为。 因此,我希望
自定义控件由2个TableLayoutPanel组成,它们位于窗体上的表布局面板和我的主窗体的预览区域中。
在设计时设置它们效果很好,但是动态地将具有1行2列的最上面的设置添加/删除到具有1列和x行的最下面的设置中,似乎打破了我所追求的自动调整大小行为。
因此,我希望单元格和行根据本例中的内容自动调整大小,但仍保持整洁有序的布局 在控件的层次结构中,任何地方都没有停靠,只是在这里和那里锚定 以下是我在下面添加tablelayoutpanels的代码
“”
在设计时设置它们很好→ 因此,请看设计器生成的代码,并将其复制并用于运行时生成。但是我确实忘记了在进行更改时暂停每个面板的布局,但仍然没有运气。嗨,吉米,感谢您,这些都不是我遇到的问题,但与我添加到最底部TLP的任何控件类似,它们不会自动调整内容的大小第一行单元格的行为与预期一致,并将根据标签文本和/或字体大小调整大小,但新行中添加的TLP不会改变,尽管行样式相同,并且所有其他属性都不正确只需在运行时创建所有内容,而不是在运行时,我得到了它,我忘记了将labels Autosize属性设置为true,因此在删除了所有不必要的内容后,我在绝望中添加了这些内容,并使用语句简化了这些内容,现在一切正常。我还删除了designer中的所有内容,然后重新执行,因为我在使用designer之后遇到了类似的TLP问题
Private Sub AddControl(ByRef Counter As Counter)
Dim Gpanel As New TableLayoutPanel
Dim tlabel As New Label
Dim clabel As New Label
Dim pad As Integer = Counter.Cpad
TLPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink
Gpanel.AutoSizeMode = AutoSizeMode.GrowAndShrink
Gpanel.AutoSize = True
Gpanel.GrowStyle = TableLayoutPanelGrowStyle.AddRows
Gpanel.BorderStyle = BorderStyle.FixedSingle
Gpanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset
TLPanel.BorderStyle = BorderStyle.FixedSingle
Gpanel.Dock = DockStyle.None
Gpanel.Padding = New Padding(0)
Gpanel.Anchor = AnchorStyles.Top Or AnchorStyles.Left
Gpanel.BackColor = Color.Transparent
Gpanel.RowCount = 1
Gpanel.ColumnCount = 2
Gpanel.RowStyles.Add(New RowStyle(SizeType.AutoSize))
Gpanel.ColumnStyles.Add(New ColumnStyle(SizeType.AutoSize))
Gpanel.ColumnStyles.Add(New ColumnStyle(SizeType.AutoSize))
tlabel.Dock = DockStyle.None
clabel.Dock = DockStyle.None
tlabel.GetPreferredSize(Size.Empty)
clabel.GetPreferredSize(Size.Empty)
tlabel.Text = Counter.Clabel
clabel.Text = Counter.Ccount.ToString
tlabel.Padding = New Padding(pad)
clabel.Padding = New Padding(pad)
tlabel.Anchor = AnchorStyles.None
clabel.Anchor = AnchorStyles.None
tlabel.ForeColor = Color.FromName(Counter.Clcolor)
clabel.ForeColor = Color.FromName(Counter.Ccolor)
Dim fontstyle As New FontStyle
fontstyle = Counter.ClfontStyle
tlabel.Font = New Font(Counter.Clfont, Counter.Clfontsize, fontstyle)
fontstyle = Counter.CcfontStyle
clabel.Font = New Font(Counter.Ccfont, Counter.Ccfontsize, fontstyle)
Gpanel.Controls.Add(tlabel, 0, 0)
Gpanel.Controls.Add(clabel, 1, 0)
TLPanel.Controls.Add(Gpanel, 0, Counter.ID)
TLPanel.RowCount += 1
TLPanel.RowStyles.Add(New RowStyle(SizeType.AutoSize))
Dim Styles As TableLayoutRowStyleCollection = TLPanel.RowStyles
Dim Cstyles As TableLayoutColumnStyleCollection = Gpanel.ColumnStyles
Gpanel.RowStyles.Item(0) = New RowStyle(SizeType.AutoSize)
TLPanel.ColumnStyles.Item(0) = New ColumnStyle(SizeType.AutoSize)
For i = 0 To Cstyles.Count - 1
Cstyles.Item(i) = New ColumnStyle(SizeType.AutoSize)
Next
For i = 0 To Styles.Count - 1
Styles.Item(i) = New RowStyle(SizeType.AutoSize)
Next
TLPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset
AutoSize = True
AutoSizeMode = AutoSizeMode.GrowAndShrink
End Sub
'