2012-05-27 13 views
37

Voglio confermare un MessageBox. Ecco la finestra di messaggio:Risultato della finestra di dialogo C# MessageBox

MessageBox.Show("Do you want to save changes?", "Confirmation", messageBoxButtons.YesNoCancel); 

E voglio fare qualcosa di simile (in pseudocodice):

if (MessageBox.Result == DialogResult.Yes) 
    ; 
else if (MessageBox.Result == DialogResult.No) 
    ; 
else 
    ; 

Come posso farlo in C#?

risposta

93
DialogResult result = MessageBox.Show("Do you want to save changes?", "Confirmation", MessageBoxButtons.YesNoCancel); 
if(result == DialogResult.Yes) 
{ 
    //... 
} 
else if (result == DialogResult.No) 
{ 
    //... 
} 
else 
{ 
    //... 
} 
+0

La ringrazio molto ... è stato davvero facile .. :) – biox

+0

Questo è quello che voglio, grazie .... –

7

Si può anche farlo in una riga:

if (MessageBox.Show("Text", "Title", MessageBoxButtons.YesNo) == DialogResult.Yes) 

E se si desidera visualizzare un messagebox in cima:

if (MessageBox.Show(new Form() { TopMost = true }, "Text", "Text", MessageBoxButtons.YesNo) == DialogResult.Yes) 
+0

Sì, ma su "else if" se metto else if (MessageBox. Mostra ("Testo", "Titolo", MessageBoxButtons.YesNo) == DialogResult.No) il messaggio riapparirà – biox

+0

Naturalmente, ma se hai solo due scelte Sì/No non hai motivo di usare altro se ... – sczdavos

+0

Sì, correggi ma ho 3 Sì, No e Annulla: D – biox

2

Questa risposta non stava lavorando per me, così ho passato a MSDN. Lì ho scoperto che ora il codice dovrebbe essere simile a questo:

//var is of MessageBoxResult type 
var result = MessageBox.Show(message, caption, 
          MessageBoxButtons.YesNo, 
          MessageBoxIcon.Question); 

// If the no button was pressed ... 
if (result == DialogResult.No) 
{ 
    ... 
} 

Speranza che aiuta

3

Se stai usando WPF e le risposte precedenti non aiutano, è possibile recuperare il risultato usando:

var result = MessageBox.Show("Message", "caption", MessageBoxButton.YesNo, MessageBoxImage.Question); 

if (result == MessageBoxResult.Yes) 
{ 
    // Do something 
} 
2

Piuttosto che usare se le istruzioni suggerisco di utilizzare un interruttore, cerco di evitare di utilizzare se le istruzioni quando possibile.

var result = MessageBox.Show(@"Do you want to save the changes?", "Confirmation", MessageBoxButtons.YesNoCancel); 
switch (result) 
{ 
    case DialogResult.Yes: 
     SaveChanges(); 
     break; 
    case DialogResult.No: 
     Rollback(); 
     break; 
    default: 
     break; 
} 
Problemi correlati