Чтобы отменить закрытие формы, в своем операторе else вам нужно e.Cancel = true;
.
Вам не нужен явный выход в вашем истинном случае.
Дайте этому попытку
private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("This will close down the whole application. Confirm?", "Close Application", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
MessageBox.Show("The application has been closed successfully.", "Application Closed!", MessageBoxButtons.OK);
}
else
{
e.Cancel = true;
this.Activate();
}
}
Я предполагаю, что ваш второй MessageBox сказал, что он закрыт, если только для целей тестирования.
Вы, вероятно, только хотите.
private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("This will close down the whole application. Confirm?", "Close Application", MessageBoxButtons.YesNo) != DialogResult.Yes)
{
e.Cancel = true;
}
}
Обратите внимание, что оператор проверяет, не нажали ли они «да», а не «отменить». Это означает, что если они нажмут «х» в диалоговом окне, это не будет считаться подтверждением.
РЕДАКТИРОВАТЬ: если mainForm не является главной формой
Хорошо, я думаю, что теперь у меня есть то, о чем вы спрашиваете.
Что бы я сделал, это поместил код, который у меня есть во втором блоке кода выше, в FormClosing, а затем в обработчик событий FormClosed получил это
private void mainForm_FormClosed(Object sender, FormClosedEventArgs e)
{
MessageBox.Show("The application has been closed successfully.", "Application Closed!", MessageBoxButtons.OK);
System.Windows.Forms.Application.Exit();
}