C# Can';退出申请
我在Visual Studio中开发一个软件,用C#编写代码,这时我注意到了一些东西。我不知道如何退出应用程序C# Can';退出申请,c#,winforms,visual-studio,C#,Winforms,Visual Studio,我在Visual Studio中开发一个软件,用C#编写代码,这时我注意到了一些东西。我不知道如何退出应用程序 namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void ExitButton_Click(obje
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ExitButton_Click(object sender, EventArgs e)
{
Application.Exit(); // This works, when I run the application and click on the button, it will indeed quit.
}
}
}
如前所述,当我点击按钮时,它确实会退出应用程序。但是如果我放置Application.Exit()代码>在其他地方,它不会工作。因此,如果我这样修改Form1()
,它不会自动退出应用程序:
public Form1()
{
InitializeComponent();
Application.Exit();
}
如果满足某些条件,例如某些应用程序文件丢失,则必须立即退出应用程序
我尝试了以下几点:
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
closeapp();
}
public void closeapp()
{
Application.Exit();
}
private void ExitButton_Click(object sender, EventArgs e)
{
closeapp();
}
}
}
现在,如果我运行应用程序,它将不会自动退出,但是,如果我单击退出按钮,它将退出应用程序
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ExitButton_Click(object sender, EventArgs e)
{
Application.Exit(); // This works, when I run the application and click on the button, it will indeed quit.
}
}
}
因此,如果它不是从表单中发生的事件调用的,它将不会关闭应用程序
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ExitButton_Click(object sender, EventArgs e)
{
Application.Exit(); // This works, when I run the application and click on the button, it will indeed quit.
}
}
}
我在网上(包括Google和StackOverflow)搜索过关键词“Application.Exit();”不起作用。他们建议我使用“Environment.Exit();”。现在在我的测试应用程序中,这是可行的,但在我正在开发的实际应用程序中,当我删除所有代码时(当然是在有备份的情况下),它看起来如下所示,但仍然不起作用
namespace Censored
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Environment.Exit(1);
}
}
}
可能是什么原因导致它不在一个应用程序中工作,而是在另一个应用程序中工作?有什么东西损坏了吗?您无法应用应用程序。请在初始化应用程序时退出。那么,如果您的条件不满足,为什么不在FormLoad
中强制退出应用程序
private void Form1_Load(object sender, EventArgs e)
{
Application.Exit();
}
我认为最好的做法不是退出应用程序。退出,因为正如您所说的,您想退出应用程序,因为缺少一些文件。如果确实缺少一些文件,您应该向用户显示一条消息,然后退出<代码>应用程序。退出
将以静默方式退出应用程序,以便用户不知道某些文件丢失。糟糕的用户体验
显示错误消息的一种简单方法是引发异常:
throw new FileNotFoundException(
"Some application files are missing! Please add them in before starting this application!");
Application.Exit
在此处不起作用的原因是当时尚未创建“应用程序”。在Main
方法中,应该有以下行:
Application.Run(new Form1());
调用上述方法后将创建“应用程序”。但是在调用Run
之前,还调用了什么?表单的构造函数!然后它调用InitializeComponent
,您要在其中退出应用程序。此时尚未调用Run
这可能与需要一个消息循环来处理消息有关。我希望您有一个应用程序.Run(newform1())代码>在program.cs中。当Form1被构造时,消息循环尚未运行,因此退出消息将不会被捕获。关于为什么会发生这种情况/这种情况是如何发生的,我们最好等汉斯·帕桑特(Hans Passant)出现。你能详细说明为什么Environment.Exit(1)代码>在同一地点不起作用?我希望它能够绕过由应用程序控制的消息循环调用@rene我现在没有Windows机器。我在Mac和环境的VS上做了一些测试。甚至没有调用Exit
。