Как управлять большим интерфейсом для приложения WinForms? - PullRequest
1 голос
/ 15 ноября 2010

Размышляя о SRP , я обнаружил, что приложение, которое я пишу, выходит из-под контроля для нашего основного интерфейса / формы.Я хотел бы изменить его, прежде чем мы зайдем слишком далеко в проект.

Какие существуют методы для создания большого интерфейса, который имеет «поверхность для рисования» с панелями инструментов, меню и т. Д.?Я также хотел бы, чтобы эта форма легко тестировалась.Должны ли быть другие классы, которые знают, как управлять MainForm, такие как ChangedStateTracker (для мониторинга грязного состояния), DocumentCreator или что-то в этом духе, чтобы "Файл> Новый" новый документ?

Проблема, с которой я сталкиваюсь, состоит в том, что так много методов внутри MainForm.cs, и поддерживать его становится действительно уродливым.

Это можно пометить CW, если необходимо.Любые другие советы / подсказки будут с благодарностью.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Джереми Миллер писал об этом несколько раз - это должно помочь вам начать:

2 голосов
/ 15 ноября 2010

Если это вариант, я бы создал набор пользовательских элементов управления, которые вместе создают всю форму.

Эти отдельные пользовательские элементы управления могут нести свою ответственность и могут быть протестированыотдельно.

Для самой логики создайте классы.

Вы можете создавать классы, такие как CreateDocumentCommand, которые реализуют некоторые функциональные возможности.Когда, например, нажата кнопка нового документа / пункт меню, создайте экземпляр этого класса и выполните его.

public interface ICommand
{
    bool CanExecute { get; }
    void Execute();
}

public class SaveDocumentCommand : ICommand
{
    public bool CanExecute
    {
        get
        {
            return MainForm.Instance.CurrentDocument.IsDirty;
        }
    }

    public void Execute()
    {
        // Save your document here.
    }
}

Кстати, как WPF это делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...