Double confirmation on exit
Solution 1
Ah, did you check the CloseReason
for the FormClosing
event? I think you might get the same event for two different reasons (although I don't exactly expect that to happen normally); check your FormClosingEventArgs
to see what the parameters are.
Solution 2
Use this
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are you sure you want to close?", "Infomate", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
}
Solution 3
Ah, I figured out how to fix it. I removed the Application.Exit(); event from the FormClosing event, and moved it into the FormClosed event. It all works now.
Solution 4
As SFD he said you need to create the event with the message box. I've added to filter if the user it's closing the form and a warning messagebox:
private void close_confirmation(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.FormOwnerClosing)
{
if (MessageBox.Show("Are you sure you want to close?", "Application", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
{
e.Cancel = true;
}
}
}
You nee to assign the event to the form to make it work:
this.FormClosing += new FormClosingEventHandler(close_confirmation);
If you want to make it stop so the user can close again the window without the message:
this.FormClosing -= close_confirmation;
Sean
Updated on July 16, 2022Comments
-
Sean almost 2 years
I am trying to make it so that the user is prompted to confirm exiting my program in c#, but for some reason, if they say "yes" they would like to exit, the confirmation box would pop up again. I can't figure out why.
if (MessageBox.Show("Are you sure you want to exit?", "Confirm exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { e.Cancel = true; } else { Application.Exit(); }
-
8oris about 2 yearsI got the same weird issue as you and your answer solved it perfeclty.