Неожиданное поведение TableLayoutPanel

Привет, возникли некоторые проблемы с некоторыми вложенными панелями tablelayoutpanel в пользовательском элементе управления. У меня есть панель tablelayoutpanel в панели tablelayoutpanel в панели макета таблиц. Сумасшедший, но он сохраняет его единообразным и упорядоченным

Пользовательский элемент управления состоит из 2 панелей tablelayout, которые размещены в панель компоновки таблицы в форме и в области предварительного просмотра моей основной формы.

Их установка во время разработки работает нормально, но динамическое добавление/удаление самых верхних из 1 строки 2 столбца в тот, который находится под ним, имеет Только 1 столбец и x строк. Кажется, это нарушает поведение автоматического изменения размера, за которым я гонюсь.
Поэтому я хочу, чтобы ячейки и строки автоматически изменялись в зависимости от содержимого в этом случае, метки, но при этом оставались в аккуратном упорядоченном макете.

Нигде в иерархии элементов управления нет стыковки, только привязки здесь и там. Вот мой код для добавления панелей tablelayout ниже
"https://i.stack.imgur.com/vRfhE.png"



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
'

person Chris Cullen    schedule 18.01.2020    source источник
comment
Установка их во время разработки отлично работает → Так что посмотрите на сгенерированный дизайнером код, скопируйте и используйте его для генерации во время выполнения.   -  person Reza Aghaei    schedule 19.01.2020
comment
Прочитайте примечания здесь: Удалить строку внутри TableLayoutPanel создает проблему макета и здесь.   -  person Jimi    schedule 19.01.2020
comment
Привет, Реза. Спасибо, но на самом деле это было первое место, которое я посмотрел. Но я, однако, забыл приостановить макет каждой панели при внесении изменений, но все равно не повезло.   -  person Chris Cullen    schedule 19.01.2020
comment
Привет, Джими, спасибо за это. Это не совсем те проблемы, с которыми я сталкиваюсь, но похожи любые элементы управления, которые я добавляю в нижнюю часть большинства TLP. но добавленный TLP в новых строках не будет работать, несмотря на то, что стиль строки тот же, а все остальные свойства просто должны создаваться во время выполнения.   -  person Chris Cullen    schedule 19.01.2020
comment
Ах, ха, понял, я забыл установить для свойства labels Autosize значение true Итак, после удаления всех ненужных вещей, которые я добавил в отчаянии и упростил с помощью операторов using, теперь все работает, как и ожидалось. Я также удалил все в дизайнере, а затем сделал их заново, потому что у меня были похожие проблемы с TLP после использования дизайнера Спасибо, ребята   -  person Chris Cullen    schedule 19.01.2020
comment
Прокрутка TLP глючит. Вы должны попытаться инкапсулировать свой TLP в панель, как описано здесь: ">stackoverflow.com/questions/15620454/.   -  person Bioukh    schedule 27.04.2021
comment
@Bioukh Спасибо, но в моем пользовательском элементе управления нет прокрутки, моя проблема была вызвана простым отсутствием свойства Autosize на метке в одной из ячеек.   -  person Chris Cullen    schedule 28.04.2021