代码之家  ›  专栏  ›  技术社区  ›  TheCloudlessSky

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

  •  1
  • TheCloudlessSky  · 技术社区  · 14 年前

    当想到 SRP ,我发现我正在编写的一个应用程序对于我们的主界面/窗体已经失控。我想在我们进入这个项目之前把它改一下。

    有哪些技巧可以制作一个带有工具栏、菜单等的“绘图面”的大型界面?我也希望这个表格易于测试。是否有其他类知道如何控制 MainForm 例如 ChangedStateTracker (用于监视脏状态), DocumentCreator 或者其他类似的内容来“归档”>“新建”一个新文档?

    我遇到的问题是 太多了 方法内部 MainForm.cs 它真的开始变得难看了。

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

    2 回复  |  直到 14 年前
        1
  •  2
  •   Pieter van Ginkel    14 年前

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

    然后,这些单独的用户控件可以有自己的责任,并且可以单独测试。

    对于逻辑本身,创建类。

    你可以创建类 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就是这样做的。

        2
  •  2
  •   BigJump    14 年前

    杰里米·米勒写过几次这方面的文章——这些应该会让你开始: