MessageBox при закрытии формы

Я использую этот код для вопроса перед закрытием приложения, но он работает неправильно.
Мой код, как показано ниже.

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   DialogResult dlgresult = MessageBox.Show("Exit or no?",
                               "My First Application",
                               MessageBoxButtons.YesNo,
                               MessageBoxIcon.Information);
   if (dlgresult == DialogResult.No)
   {
      e.Cancel = true;

   }
   else
   {
     Application.Exit();
   }
}

1 ответов


вам не нужно явно вызывать Application.Exit() так как вы находитесь в FormClosing событие, которое означает, что запрос закрытия был запущен(например, нажмите на крестик на кнопке формы,this.Close()). Вам просто нужно перехватить запрос закрытия и указать e.Cancel = true;

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if(MessageBox.Show("Exit or no?",
                       "My First Application",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Information) == DialogResult.No) {
        e.Cancel = true;
    }
}