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

时间:2014-01-10 16:05:33

标签: c# winforms

我会尽量让这个问题变得简单。我有三种形式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_Wizardfrm_Main的最佳做法是什么?在完成更新之前我不希望它们加载(如果有的话)。

在此之后,如果需要显示向导,则启动屏幕应该消失,并且应该出现向导。

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

我知道的一些事情:

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

最后,我正在寻找一些通用代码或如何执行此操作的概念。我已经熟悉c#编码了,所以你不需要编写所有代码。我只是在寻找最佳实践来处理这个问题。即我应该在Program.cs或每个表单的加载事件中编码吗?如果我的问题有任何不清楚的地方,请在投票前告知我们!谢谢。

1 个答案:

答案 0 :(得分: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启动主表单的好处,我假设其中一个允许访问Application状态函数(例如Exit),但我可以说我已经使用过这种技术过去是一个闪屏,并没有任何问题这样做