我会尽量让这个问题变得简单。我有三种形式 frm_Splash
检查更新; frm_Wizard
完成首次运行设置;和 frm_Main
这是主程序。这些表格的关系如下图所示:
现在在 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
中编码,还是在每个表单的加载事件中编码?如果我的问题有任何不清楚的地方,请在投反对票之前告诉我!谢谢。
最佳答案
需要注意的一件事是您不需要使用 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/