Ошибка высоты FlowLayoutPanel при использовании AutoSize

У меня есть форма, содержащая TableLayout с 1 столбцом и 3 строками, которая содержит 2 FlowLayoutPanel и текстовое поле. Все строки имеют AutoSize, а для столбца установлено значение Percentage = 100 %.

Каждая FlowLayoutPanel содержит несколько текстовых полей. FlowLayoutPanels установлены: LeftToRight, AutoSize = true, GrowAndShrink, Docking = Fill.

Схема такова:

Form
    TableLayout (Dock=Fill)
        FlowLayoutPanel(Dock=Fill, AutoSize=True, GrowShrink)
           More controls
        FlowLayoutPanel(Dock=Fill, AutoSize=True, GrowShrink)
           More controls
        TextBox(Dock=Fill, MultiLine=true)

Проблема в том, что если я помещаю FlowLayoutPanel в GroupBox, для которого также установлено значение AutoSize = true, высота FlowLayoutPanel устанавливается неправильно, и он показывает текстовые поля в одной строке, вырезая некоторые текстовые поля. формы.

Схема такая:

Form
    TableLayout (Dock=Fill)
        GroupBox (Dock=Fill, AutoSize=True, GrowShrink) 
            FlowLayoutPanel(Dock=Fill, AutoSize=True, GrowShrink)
               More controls
        GroupBox (Dock=Fill, AutoSize=True, GrowShrink) 
            FlowLayoutPanel(Dock=Fill, AutoSize=True, GrowShrink)
               More controls
        TextBox(Dock=Fill, MultiLine=true)

Кстати, то же самое происходит, если я использую вместо GroupBox, Panel или даже UserControl для хранения FlowLayoutPanel.

Кстати 2, это происходит даже без TableLayout. Я попытался разместить GroupBox (с FlowLayoutPanel) в форме AutoSized, и у меня такое же поведение.

Я думаю, что проблема в том, что когда FlowLayoutPanel находится в другом контейнере, который также является AutoSized, он не может передать его контейнеру предпочтительного размера.

Что можно сделать, чтобы исправить эту ошибку ??

Пожалуйста, помогите Спасибо, Йорам


p.s: Я должен использовать GroupBox, чтобы иметь красивую рамку вокруг текстовых полей.

5
задан Gert Arnold 4 October 2011 в 12:07
поделиться