我在关闭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再次显示,然后我单击是,应用程序退出。为什么要显示两次?
答案 0 :(得分:6)
您不必致电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;
}
}
答案 1 :(得分:5)
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.");
}
}
答案 2 :(得分:2)
您需要在活动e.Cancel = true;
中使用Main_FormClosing
取消退出以停止关闭
答案 3 :(得分: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()方法在与消息框一起使用时会提供对话框的结果。
答案 4 :(得分: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();
}
答案 5 :(得分:1)
如果您只是将以下代码放入退出按钮的点击事件中,它可以正常工作:)
DialogResult quit = MessageBox.Show("Are you sure you want to quit?", "Quit", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
if (quit == DialogResult.Yes) this.Close();