The approach of using a TableLayoutPanel mentioned in the comments by @Idle_Mind and dynamically hiding/showing rows is definitely one option.
Another I'd like to mention is the SplitContainer control.
It consists of two panels that can stack horizontally or vertically with a separator in-between. And it allows hiding one of the panels so the other takes up the size for both.