4

我在我的 Windows 表单申请表的关闭事件中使用以下代码:

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult dr = MessageBox.Show("Are you sure you want to quit?", "Leaving App",MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (dr == DialogResult.No)
    {
        return;
    }
    else
    Application.Exit();
}

但问题是,每当用户单击“是”时,应用程序就会结束,但当用户单击“否”时,应用程序仍在运行,但表单会隐藏。当用户单击否时,如何保持表单可见?

更新

我面临的另一个问题是,当我单击“是”时,MessageBox 再次显示,然后单击“是”,应用程序退出。为什么要显示两次?

4

6 回答 6

8

您不必打电话Application.Exit(),因为如果您不取消关闭它,程序将自行退出。以下是有效的更正代码:

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult dr = MessageBox.Show("Are you sure you want to quit?", "Leaving App",MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (dr == DialogResult.No)
    {
        e.Cancel = true;
    }
}
于 2013-07-30T09:06:50.920 回答
7
private void Form1_Closing(Object sender, CancelEventArgs e) {
   if (!isDataSaved) {
      e.Cancel = true;
      MessageBox.Show("You must save first.");
   }
   else {
      e.Cancel = false;
      MessageBox.Show("Goodbye.");
   }
}

资料来源:MSDN

于 2013-07-30T09:07:39.067 回答
2

您需要e.Cancel = true;在您的事件中使用取消退出Main_FormClosing以停止关闭

于 2013-07-30T09:08:09.397 回答
1

如果您只是将以下代码放入退出按钮的单击事件中,它就可以正常工作:)

DialogResult quit = MessageBox.Show("Are you sure you want to quit?", "Quit", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
if (quit == DialogResult.Yes) this.Close();
于 2015-03-07T03:10:05.310 回答
1

我是 Akhilavishnu,如需更多帮助,请发邮件给我 akhilavishnu2@gmail.com。请将这些代码行放入您的应用程序中,它运行良好,编码愉快。

private void    Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if(MessageBox.Show("Are you sure that you want to exit", 
                        MessageBoxButtons.YesNo, 
                        MessageBoxIcon.question) == DialogResult.No)
    {
        e.Cancel=true;
    }
}

//in formclose event
private void Form1_FormClosed(object sender,FormClosedEventArgs e)
{
    Application.Exit();
}
于 2014-03-28T06:59:21.253 回答
1

我知道这不是正确的方法,但它会如你所愿。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   if(MessageBox.Show("Are you sure you want to quit?", "Leaving App", MessageBoxButtons.YesNo).ToString()=="No")
        e.Cancel = true;
}

因为 ToString() 方法会在与消息框一起使用时提供对话框的结果。

于 2013-08-06T02:24:18.777 回答