I am developing a application using windows forms. The project contains 3 forms: one login form which is the main form and two others which are child forms to the login form.
My problem is when want to close the total application by using Application.Exit() in form closing event my messagebox showing the dialog more than once.
1.This code in Login form i.e main form:
private void FrmLogIn_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult loginResult = MessageBox.Show("Do you want to close this application?","Close",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
if (loginResult == DialogResult.Yes)
{
Application.Exit();
}
}
2.AdminForm closing event which is child form to login form:
private void FrmAdmin_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult loginResult = MessageBox.Show("Do you want to close this application?","Close",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
if (loginResult == DialogResult.Yes)
{
Application.Exit();
}
}
3.Billoperations form closing event which is child form to login form:
private void FrmBillOperation_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult loginResult = MessageBox.Show("Do you want to close this application?","Close",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
if (loginResult == DialogResult.Yes)
{
Application.Exit();
}
}
When i click the close button in any form it will show MessageBox message only once. Please help me.
Make all FormClosing methods call a
ApplicationShutdownfunction which handles this in a central place. You don’t want to copy this code to every new form you create.In this method you can check a boolean (watch for thread-safety) called for example
IsShuttingDown. If it’s already true, leave the method, otherwise you ask the question and start exiting.