Я хочу сделать подтверждение MessageBox. Вот окно сообщения:

DialogResult dialog = MessageBox.Show("Etes vous sûre de vouloir fermer le programme ?", "Exit",MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes)
{
  Application.Exit();
}
else if (dialog == DialogResult.No)
{
    e.Cancel = true;
}

Проблема в том, что когда я нажимаю кнопку «ДА», всплывающее окно не закрывается автоматически. Он закроется после того, как я еще раз нажму 2 раза. Его следует закрыть с первого раза.

Это кажется довольно простым, но я не уверен, в чем моя ошибка;

3
Y.Arsoy 28 Апр 2016 в 10:33

4 ответа

Лучший ответ

Если это метод закрытия основной формы, вы можете использовать его следующим образом:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (MessageBox.Show("Really close?", "Exit", MessageBoxButtons.YesNo) ==
        System.Windows.Forms.DialogResult.No)
        e.Cancel = true;
}

Если пользователь нажмет «Да», ваша форма будет закрыта из-за отсутствия закрытия. Если это не закрытие основной формы, это не означает выход из приложения. В этом случае вы можете закрыть родительскую форму явно после вызова ShowDialog.

5
Dmitriy Zapevalov 28 Апр 2016 в 07:42
switch (MessageBox.Show("Etes vous sûre de vouloir fermer le programme ?", "Your_Application_Name", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
        {
            case DialogResult.Yes:
                Application.Exit();
                break;
            case DialogResult.No:
                //Action if No
                break;

        }
0
Ahmed Noozan Ali 28 Апр 2016 в 08:06

Позвоните Application.DoEvents() до Application.Exit(). Но лучше закрыть родительскую форму с помощью Close() вместо Application.Exit.

1
i486 28 Апр 2016 в 07:47

Ниже приведен код для запроса сообщения (Да / Нет):

DialogResult dialogResult = MessageBox.Show("Are you sure to delete Yes/No", "Delete", MessageBoxButtons.YesNo);

if (dialogResult == DialogResult.Yes)
{
   /// do something here        
}
3
Anjan Kant 28 Июл 2016 в 11:05