如何管理WinForms应用程序的大型接口?

时间:2010-11-15 17:57:27

标签: c# .net winforms user-interface

在考虑SRP时,我发现我正在编写的应用程序对我们的主界面/表单失控了。在我们深入项目之前,我想改变它。

使用工具栏,菜单等制作具有“绘图表面”的大型界面有哪些技巧?我也希望这种形式易于测试。是否应该有其他类知道如何控制MainForm,例如ChangedStateTracker(监视脏状态),DocumentCreator或其他类似“File> New”的新类文件?

我遇到的问题是MainForm.cs内有这么多方法,而且它真的开始难以维护。

如有必要,可以标记为CW。任何其他提示/提示将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果这是一个选项,我会创建一组用户控件,它们共同生成整个表单。

这些单独的用户控件可以自己负责,可以单独测试。

对于逻辑本身,创建类。

您可以创建实现某些功能的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如何做到的。

答案 1 :(得分:2)

杰里米·米勒(Jeremy Miller)曾多次写过这篇文章 - 这些应该让你开始: