Я исследовал MVC и MVP, но я не уверен, что они мне нужны.
В настоящее время у меня много объектов Model, и мой вид - это основная форма (Form1.cs).
Проблема в том, что основная форма сейчас становится очень большой.Например, когда пользователь нажимает на элемент меню отмены, вызывается обработчик события undoButton_Click.Это отлично.Проблема состоит в том, что код в этом обработчике событий состоит из 10 строк (вывод отмены стека, нажатие повтора восстановления, обновление элементов управления формы и т. Д.).Это может показаться не так много, но когда в вашей форме много элементов управления, строки быстро складываются.
Я думал об этом и хочу простое решение.В идеале, когда вызывается undoButton_Click, тело метода должно быть одной строкой кода.В идеале должен быть класс (возможно, производный от интерфейса, который определяет один метод Run или что-то в этом роде), который я мог бы вызвать, чтобы выполнить эту отмену.
Проблема в том, что undoButton_Clickработает со многими элементами управления формой и переменными-членами класса.Как этот класс будет иметь доступ к этим элементам управления?Я не могу передать форму в качестве аргумента, потому что все элементы управления являются частными.Я действительно предпочитаю не делать все элементы управления общедоступными или предоставлять множество открытых свойств для доступа к ним.Даже если бы я сделал это, что из переменных-членов, которые Form1 имеет как undoStack или объект документа?
Совершенно невозможно передать все необходимые аргументы, потому что список параметров будет огромным, и если изменения когда-либо понадобятсябыть сделанным это было бы кошмаром.
Не совсем уверен, как подойти к этой проблеме.Однако я знаю, что мой Form1.cs слишком загроможден логикой и манипулированием объектами.Я просто хочу, чтобы он отвечал на события и вызывал соответствующий метод / класс для обработки события.
Спасибо за чтение и извините за стену текста.