c# - 如何管理 WinForms 应用程序的大型界面?

标签 c# .net winforms user-interface

当想到 SRP ,我发现我正在编写的应用程序对于我们的主界面/表单来说已经失控了。我想在项目深入之前更改它。

制作具有带有工具栏、菜单等的“绘图表面”的大型界面有哪些技巧?我还希望此表单易于测试。是否应该有其他类知道如何控制 MainForm,例如 ChangedStateTracker(监视脏状态)、DocumentCreator 或类似的东西要“文件 > 新建”一个新文档吗?

我遇到的问题是 MainForm.cs 中有太多方法,维护起来确实开始变得难看。

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

最佳答案

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

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

对于逻辑本身,创建类。

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

关于c# - 如何管理 WinForms 应用程序的大型界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187368/

相关文章:

c# - 在数据库中创建新表后刷新组合框

c# - 在 .NET 中创建 Uri 会自动对传递的字符串中的所有参数进行 urldecode

c# - Asp.net mvc 应用程序中 Layout 和局部 View 的比较

c# - GetType() 何时返回 RunTimeType,何时返回 SampleProgram.MyClass1 之类的类型?

c# - 如何从C#的最后一行到第一行读取文本文件

c# - 自定义控制框按钮

c# - 如何遍历 Treeview 节点的所有层?

c# - 将 DRY 应用于 Autofixture "Build"语句

c# - 使用 Xamarin 滑动图像

.net - OpenXML 每行的文件越大越慢?