Когда обновляется Panel.Size после добавления элементов управления, когда Panel.AutoSize = true?

Я создаю графический интерфейс вC # с помощьюWinForms.
Я пытаюсь расположить программно созданные панели один под другим. Поскольку содержимое этих панелей может различаться в зависимости от их содержания, я используюPanel.AutoSize позволить WinForms выполнить правильное изменение размера.

Проблема в том, что если я используюPanel.Height (или жеPanel.Size.Height) сразу после заполненияPanelвозвращаемое значение всегда является моим значением по умолчанию. Изменение размера происходит, как я вижу при запуске приложения, но я просто не знаю, когда.

Вот упрощенная версия того, что я делаю:

this.SuspendLayout();

int yPos = 0;
foreach (String entry in entries)
{
    Panel panel = new Panel();
    panel.SuspendLayout();
    panel.AutoSize = true;
    panel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly;
    panel.BackColor = System.Drawing.SystemColors.Window; // Allows to see that the panel is resized for dispay
    panel.Location = new System.Drawing.Point(0, yPos);
    panel.Size = new System.Drawing.Size(this.Width, 0);
    this.Controls.Add(panel);

    Label label = new Label();
    label.AutoSize = true;
    label.Location = new System.Drawing.Point(0, 0);
    label.MaximumSize = new System.Drawing.Size(panel.Width, 0);
    label.Text = entry;
    panel.Controls.Add(label);

    panel.ResumeLayout(false);
    panel.PerformLayout();

    yPos += panel.Height; // When breaking here, panel.Height is worth 0
    yPos += label.Height; // This works perfectly, label.Height was updated according to the text content when breaking at that point
}

this.ResumeLayout(false);
this.PerformLayout();

Итак, настоящий вопрос: как я могу получить обновленнуюPanel.Size после добавления элементов управления, чтобы получить правильное значение высоты?

Примечание: я знаю, что могу использоватьTextBox высота, но я нахожу это не элегантным и непрактичным, так как в моем реальном коде есть больше элементов управления вPanel и мне нужно использовать эту высоту панели несколько строк ниже.

Ответы на вопрос(1)

Ваш ответ на вопрос