2013-03-15 4 views
-1

Я хочу, чтобы элемент menustrip под названием «Выход» вызывал MessageBox, спрашивая у пользователя, действительно ли они хотят выйти, но независимо от того, нажали ли они «Да» или «Нет», он все равно выходит из программы.MessageBox - обе кнопки делают то же самое?

private void Exit_Click(object sender, EventArgs e) 
    { 
     // Shows a prompt asking the user if they really want to exit 
     DialogResult dQuit; 

     dQuit = MessageBox.Show("Do you really wish to exit?", 
           "Exit?", 
           MessageBoxButtons.YesNo, 
           MessageBoxIcon.Question); 

     // If 'Yes' button is clicked, close the program 
     if (dQuit == DialogResult.Yes) 
     { 
      Application.Exit(); 

     } 
     else 
     { 
      // Else, close the dialog box and return to the menu screen 
      this.DialogResult = System.Windows.Forms.DialogResult.No; 
     } 
    } 
+0

Почему ... вы можете просто иметь? сообщение, говорящее, что выходите с кнопкой ok, если это действительно то, что вам нужно – Sayse

+0

Я не знаю, почему вы хотели бы такого поведения. Но в этом случае зачем показывать MessageBox вообще? Просто выйдите, не спрашивая пользователя. – Otiel

+0

Что такое код, который вызывает 'ShowDialog()' для этого диалога? –

ответ

4

Вы закрытия формы себя, используя код

this.DialogResult = System.Windows.Forms.DialogResult.No; 

в вашем else блоке.

Вам не нужно ничего делать, чтобы закрыть MessageBox; он автоматически закрывается всякий раз, когда пользователь нажимает одну из кнопок. Метод MessageBox.Show не возвращается, пока MessageBox уже не закрыт.

2

вы можете попробовать это без else:

if (MessageBox.Show("Do you really wish to exit?", "Exit?", MessageBoxButtons.YesNo) == DialogResult.Yes) 
    { 
    Application.Exit(); 
    } 
+0

У меня даже не было бы 'if', только сообщение с сообщением, тогда выход приложения (я имею в виду, если бы я когда-либо хотел это сделать) – Sayse

+0

, тогда как вы возьмете' DialogResult'? – Arshad

+0

не имеет значения, возьмите его, потому что он хочет сделать то же самое, независимо от – Sayse

1
MessageBox.Show("Do you really wish to exit?", "Exit?", MessageBoxButtons.YesNo); 
Application.Exit(); 

Я бы сильно обескуражить делать это вообще, хотя, как это плохо для пользователя удобство

+0

. протестировал ваш ответ, он работает в обоих случаях (кнопки) – Arshad

+0

этот ответ отвечает на вопрос пользователей «но независимо от того, нажали ли они« Да »или« Нет », он все равно выходит из программы». – Sayse

+0

, тогда зачем нужна «MessageBox»? – Arshad

Смежные вопросы