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

标签 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 中编码,还是在每个表单的加载事件中编码?如果我的问题有任何不清楚的地方,请在投反对票之前告诉我!谢谢。

最佳答案

需要注意的一件事是您不需要使用 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 启动主窗体的好处,我假设其中之一是允许访问应用程序状态函数(例如 Exit),但我可以说我过去曾将这种技术用于启动画面,并且没有遇到任何问题

关于c# - 如何在启动时处理表单显示顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048912/

相关文章:

java - 网络和多平台中的 Endian - 澄清吗?

c# - Color.FromArgb 如何将 Int32 作为参数?

c# - System.Drawing.Color 结构体如何初始化颜色?

.net - 在 Visual Studio 设计器中公开枚举(标志)集合

c# - "ADD"从 XML 文件到 DataGridView

c# - 如何获得 child 控制权?

c# - 继承自己的Page后Page_Load没有加载

C# 从正确的文本框中选择文本

C# - 图像作为可点击的按钮

c# - 在数据绑定(bind)时检索 datagridviewcombobox 后面的数据行