Я пробовал нечто подобное, и создание одной формы, где я скрывал / отображал соответствующие поля, было самым простым решением.Другой идеей было бы создать фабрику, которая затем строит вашу форму в соответствии с вашими потребностями.
Итак, вы в основном создаете компоненты, из которых состоит ваша форма, и фабрика связывает их вместе посредством внедрения зависимости конструктора.Для меня это очень хорошо сработало, а также дает дополнительное преимущество: очень просто расширять вашу форму.
(пример добавлю позже).