我想在实际表单之前显示一个对话框(消息框),如果用户选择“否”,则应完全关闭该应用程序。我正在尝试使用下面的代码,但是即使单击“否”,也不会显示该表单!
public Form1()
{
InitializeComponent();
if (MessageBox.Show("Contiue or not", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.None, MessageBoxDefaultButton.Button1) == DialogResult.No)
Application.Exit();
}
我也尝试过
this.Clsoe
,但随后我对Application.Run()
问题是什么?知道这样做的最佳方法是什么?
最佳答案
在OnLoad
事件而不是构造函数中显示您的消息框,例如:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (MessageBox.Show("Contiue or not", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.None, MessageBoxDefaultButton.Button1) == DialogResult.No)
{
Application.Exit(); // or this.Close();
}
}
Application.Exit()
在构造函数中不起作用,因为还没有任何形式,因此,没有消息泵停止。同样,
this.Close()
会引发错误,因为它会导致在表单上调用Dispose()
。 Application.Run
之后立即尝试显示该表单,但该表单已被处理并引发异常。关于c# - 在构造函数中的MessageBox调用上退出应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10601340/