我想在实际表单之前显示一个对话框(消息框),如果用户选择“否”,则应完全关闭该应用程序。我正在尝试使用下面的代码,但是即使单击“否”,也不会显示该表单!

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/

10-12 01:35