我会尽量让这个问题变得简单。我有三种形式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
或每个表单的加载事件中编码吗?如果我的问题有任何不清楚的地方,请在投票前告知我们!谢谢。
答案 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),但我可以说我已经使用过这种技术过去是一个闪屏,并没有任何问题这样做