В этой ситуации мне всегда удобнее с Model View Controller.Разработчик Shade Tree написал самую информированную серию, которую я когда-либо читал на эту тему: см. Здесь
Суть MVC
Модель содержитданные для отображения
Вид является вашей формой и имеет только логику для отображения и информирования о взаимодействиях пользователей
Контроллер содержит клей для созданиявсе это происходит, включая бизнес-логику.
Зависимости должны быть
Модель не знает о представлении или контроллере
Представление знает о модели и знает, как извлечь из нее данные для отображения.
Контроллер знает о модели и представлении, создает их экземпляры и соединяет их вместе.
Модель вызывает событие, когда оно изменяется, представление захватывает это событие и соответственно обновляет его отображение.
Представление вызывает событие, когда происходит взаимодействие с пользователем, контроллер захватывает это событие и выполняет совместную работу.Правильное действие для взаимодействия, будь то обновление модели, сохранение или очистка или что-то еще.
Представление не должно записывать в саму модель
Вы увидите много кода, где создается формаконтроллер, но имо это неправильно.Это произошло из-за того, что люди пытались применить этот шаблон в веб-формах asp.net, где у вас нет контроля над жизненным циклом, первое, что всегда создавалось, было представление, поэтому у вас не было выбора, кроме как создать контроллер, однако вwinforms, которые вы контролируете, так что сделайте его чистым, попросите контроллер создать представление.