У вас должен быть отдельный класс, который отвечает за создание / управление формами. Я бы порекомендовал использовать шаблон Command для вызова кода, который открывает новую форму. В результате масштабирование будет намного лучше, и вы сможете изменить реализацию Command, чтобы выполнять разные действия. В моих проектах я просто делаю изменения данных в самой форме, но все, что взаимодействует с «приложением», делегируется объекту Command.
Вам НЕ НУЖНА среда IOC для этого, но это помогает. Если у вас просто есть простые потребности, вы можете сохранить их простыми.
У меня есть пример WinForms MVP на моем сайте здесь: ModelViewPresenter . Я не использую никаких контейнеров IOC, но структурирую код так, чтобы его использование было быстрым прыжком.