Это поведение хорошо обрабатывается классами Panel и Form без явного определения размера (и без ошибок макета, которые появляются, когда пользователь имеет монитор с высоким разрешением или использует настройки шрифта большого или очень большого размера.
1) Создайте форму с закрепленной панелью FlowLayout.

2) Установите для параметра AutoSize для параметра FlowLayoutPanel значение true, а для параметра AutoSizeMode - значение GrowAndShrink

3) Добавьте свои панели и контент.

4) Программно установите свойство Visible желаемой панели на скрытое
hiddenPanel.Visible = false;

5) или true
hiddenPanel.Visible = true;
