Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 意外的TableLayoutPanel行为_Vb.net_Winforms_Tablelayoutpanel - Fatal编程技术网

Vb.net 意外的TableLayoutPanel行为

Vb.net 意外的TableLayoutPanel行为,vb.net,winforms,tablelayoutpanel,Vb.net,Winforms,Tablelayoutpanel,您好,自定义控件中的某些嵌套tablelayoutpanels存在一些问题 我知道我有一个tablelayoutpanel在一个tablelayoutpanel在一个tablelayoutpanel中,但它保持了它的统一性和有序性 自定义控件由2个TableLayoutPanel组成,它们位于窗体上的表布局面板和我的主窗体的预览区域中。 在设计时设置它们效果很好,但是动态地将具有1行2列的最上面的设置添加/删除到具有1列和x行的最下面的设置中,似乎打破了我所追求的自动调整大小行为。 因此,我希望

您好,自定义控件中的某些嵌套tablelayoutpanels存在一些问题 我知道我有一个tablelayoutpanel在一个tablelayoutpanel在一个tablelayoutpanel中,但它保持了它的统一性和有序性

自定义控件由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
'