如何处理启动时的表单显示顺序

问题描述 投票:0回答:1

我有三个表格

frm_Splash
,用于检查更新;
frm_Wizard
完成首次运行设置;和
frm_Main
这是主程序。这些形式的关系如下图所示:

Form Process Chart

现在在

Program.cs
我有这个代码:

public static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new frm_Main());
}

frm_Main
设置为我的主要形式。处理
frm_Wizard
frm_Main
的最佳做法是什么?我不希望它们在完成更新之前加载(如果有的话)。

此后,如果需要显示向导,则初始屏幕应消失并出现向导。

最后,一旦完成所有更新和首次设置,就会显示主窗体(但不是之前)。我如何实现这一切?

我知道的一些事情:

  • 我知道我可以将
    frm_Splash
    设置为启动形式,但是当我关闭它时,整个程序都会关闭。
  • 我也可以隐藏表单,但这不是浪费表单的内存吗 坐在后台?

最后,我正在寻找一些如何执行此操作的通用代码或概念。我已经熟悉 C# 编码,因此您不需要编写所有内容。我只是在寻找解决这个问题的最佳实践。即我应该在

Program.cs
或每个表单的加载事件中编码吗?

c# winforms
1个回答
2
投票

需要注意的一件事是,您不需要使用

Application.Run
来启动表单。因此,您只需在
Main
函数中创建一个 3 步流程即可:

public static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    //Show splash form (which checks for updates)
    FormSplash splash = new FormSplash();
    splash.ShowDialog();//will wait until splash closed

    //check if first run and show if needed
    if(IsFirstRun())
    {
        FormWizard wizard = new FormWizard();
        wizard.ShowDialog();//will wait until wizard is closed
    }

    //Finally, run your application as normal
    Application.Run(new frm_Main());
}

注意:我不知道使用

Application.Run
启动主窗体的好处,我假设其中之一允许访问应用程序状态功能(例如退出),但我可以说我已经使用这种技术过去的启动画面,并且这样做没有任何问题

© www.soinside.com 2019 - 2024. All rights reserved.