Нет, это правильный способ сделать это.Попытка использовать что-то вроде TableLayoutPanel не только мучительно болезненна, но и затягивает серьезную грязь, занимая секунду или больше, чтобы нарисовать себя.Это займет кучу кода, но это не сложный код.Множество возможностей для петель.
Получите прокручиваемый вид с AutoScrollMinSize панели.Используйте Graphics.TranslateTransform (), передавая AutoScrollPosition в событии Paint или переопределении OnPaint.Последнее рекомендуется, получить свой собственный контроль от Panel, чтобы сохранить код отдельно.У вас есть много возможностей, чтобы настроить внешний вид, весело провести время.