gpt4 book ai didi

c# - 从WindowsFormsApplicationBase.OnCreateMainForm()退出应用程序的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 07:49:45 25 4
gpt4 key购买 nike

假设在 WindowsFormsApplicationBase.OnCreateMainForm() 时出了点问题,如何“温和”退出应用程序?我想退出,就像使用时按下了关闭按钮一样,所以我猜 Environment.Exit() 不太适合,因为它会立即终止应用程序,并且可能不允许应用程序自行清理。

我的代码如下所示:

 public class MyApp : WindowsFormsApplicationBase
{
public MyApp()
{
this.IsSingleInstance = true;
}

protected override void OnCreateSplashScreen()
{
this.SplashScreen = new splashForm();
}

protected override void OnCreateMainForm()
{
if(!do_something()) {
/* something got wrong, how do I exit application here? */
}

this.MainForm = new Form1(arg);
}

而我的 Main()函数:
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
new MyApp().Run(args);
}

最佳答案

我通过创建一个空窗体来立即解决该问题,该窗体立即在load事件处理程序中自行关闭。这样可以避免NoStartupFormException

    public partial class SelfClosingForm : Form
{
public SelfClosingForm()
{
InitializeComponent();
}

private void SelfClosingForm_Load(object sender, EventArgs e)
{
Close();
}
}

protected override void OnCreateMainForm()
{
...

if (error)
{
//this is need to avoid the app hard crashing with NoStartupFormException
this.MainForm = new SelfClosingForm();
return;
}
...

关于c# - 从WindowsFormsApplicationBase.OnCreateMainForm()退出应用程序的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38471199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com