2012-05-27 21 views
37

Quiero hacer una confirmación MessageBox. Aquí está el cuadro de mensaje:C# Resultado del cuadro de diálogo Mensaje

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

Y quiero hacer algo como esto (en pseudocódigo):

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

¿Cómo puedo hacer que en C#?

Respuesta

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

Muchas gracias ... que era muy fácil .. :) – biox

+0

Esto es lo que quiero, gracias .... –

7

También puede hacerlo en una fila:

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

Y si desea mostrar un cuadro de mensaje en la parte superior:

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

Sí, pero en "else if" si pongo else if (cuadro de mensaje. Mostrar ("Texto", "Título", MessageBoxButtons.YesNo) == DialogResult.No) el mensaje volverá a aparecer – biox

+0

Por supuesto, pero si solo tiene dos opciones Sí/No, no tiene ninguna razón para usar else si ... – sczdavos

+0

Sí, corrige, pero tengo 3 Sí, No y Cancelar: D – biox

2

Esta respuesta no estaba trabajando para mí, así que pasó al MSDN. Allí me encontré con que ahora el código debería tener este aspecto:

//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) 
{ 
    ... 
} 

creo que sirve

3

Si está utilizando WPF y las respuestas anteriores no ayudan, se puede recuperar el resultado usando:

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

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

En lugar de utilizar sentencias if, sugiero utilizar un conmutador en su lugar, trato de evitar el uso de sentencias if cuando sea posible.

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; 
} 
Cuestiones relacionadas