如何构建一个Winform应用,其中'主表单'不是一切的中心

本文关键字:表单 构建 何构建 一个 应用 Winform 其中 | 更新日期: 2023-09-27 18:02:40

构造c# Winform应用程序的传统方法是有一个主表单,并在Program.cs中创建/启动它。我继承了一个应用程序,它有一个"主"的形式(让我们称之为MyMainForm或简称MMF),从Program.cs运行在约定的方式Application.Run(new MMF());。MMF因子做了大量的设置,然后打开一个相当复杂的启动对话框,从用户那里获取信息,比如要连接哪台服务器,等等。当对话框完成时,控制返回到MMF因子,该因子进行更多的设置并最终返回。在这一点上(在我的理解中,尽管我仍然是Winform的新手),我相信MMF的形式(最终)显示出来了。

在我看来这很不整洁。我宁愿有一个"主应用程序"类,(1)做所有的设置和配置,然后显示启动对话框,然后使用对话框上提供的答案,根据答案做最终的内部设置和配置,最后使主形式可见。

这是一个可行的方法吗?我特别不喜欢MMF因子因许多设置步骤而负担过重的事实。有一个主类(其实例)来创建/组装/连接应用程序的高级对象似乎更简洁,并且它将显示表单,因为它需要与用户交互。

有没有人有一个方法(我敢说哲学)如何构建一个Winform应用程序没有"主"表单?在MMF中做所有的设置工作看起来很不干净。

如何构建一个Winform应用,其中'主表单'不是一切的中心

你的应用需要一个主表单,我不认为你甚至可以改变它,所以它从头到尾是相同的主表单。

话虽如此,你不必在主表单中做所有复杂的事情。避免做任何对于在actor中初始化表单不是绝对关键的事情。

你应该有其他类来封装你的应用程序的业务逻辑(以及任何表示逻辑),在你的主要形式中,你只需要构造它们并为用户事件(即按下按钮)调用它们的方法。有了这样的架构,你就可以把所有的业务(和表示)逻辑从UI中分离出来。

一般来说,它是这样工作的:

首先,你有一个闪屏。启动画面出现,显示产品信息和版本等信息。当闪屏显示时,所有的初始化工作都完成了。它应该在一个类中,像这样:

public class Initialization
{
    public static void Initialize()
    {
        // Do your initialization stuff here
    }
 }

在你的主程序中,你应该这样写:

 SplashScreen.show();
 Initialization.Initialize();
 SplashScreen.hide();
 ShowStartupDialog.ShowDialog();
 MainForm.show();

这将显示你的启动画面。当它显示时,应用程序将进行初始化。它会隐藏开机画面,然后显示启动对话框。当用户完成该对话框后,主表单将最终显示。