¿Cómo creo un cuadro de mensaje con las opciones "Sí", "No" y un DialogResult?


345

Quiero hacer simple MessageBox elegido Sí / No, pero creo que no tiene sentido diseñar un formulario para eso. Pensé que podría usar MessageBox, agregar botones, etc. para lograr esto. Es simple, pero como no se devuelve DialogResult, ¿cómo recupero el resultado?

Respuestas:


791

Esto debería hacerlo:

DialogResult dialogResult = MessageBox.Show("Sure", "Some Title", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    //do something
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}

66
La respuesta fue para Windows, no para Windows Phone, de la que no sé mucho :)
Mikael Svenson

22
'DialogResult' no funciona en wpf. Tienes que usar 'MessageBoxResult'.
matsolof

56
DialogResult dr = MessageBox.Show("Are you happy now?", 
                      "Mood Test", MessageBoxButtons.YesNo);
switch(dr)
{
   case DialogResult.Yes:
      break;
   case DialogResult.No:
      break;
}

La clase MessageBox es lo que estás buscando.


32
MessageBox.Show(title, text, messageboxbuttons.yes/no)

Esto devuelve un DialogResult que puede verificar.

Por ejemplo,

if(MessageBox.Show("","",MessageBoxButtons.YesNo) == DialogResult.Yes)
{
   //do something
}


12

Utilizar:

MessageBoxResult m = MessageBox.Show("The file will be saved here.", "File Save", MessageBoxButton.OKCancel);
if(m == m.Yes)
{
    // Do something
}
else if (m == m.No)
{
    // Do something else
}

MessageBoxResult se usa en Windows Phone en lugar de DialogResult ...


6

También puede usar esta variante con cadenas de texto, aquí está el código cambiado completo (Código de Mikael), probado en C # 2012:

// Variable
string MessageBoxTitle = "Some Title";
string MessageBoxContent = "Sure";

DialogResult dialogResult = MessageBox.Show(MessageBoxContent, MessageBoxTitle, MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    //do something
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}

Puedes después

.YesNo

inserte un icono de mensaje

, MessageBoxIcon.Question

5

La respuesta de @Mikael Svenson es correcta. Solo quería agregarle una pequeña adición:

El icono del cuadro de mensaje también se puede incluir tiene una propiedad adicional como a continuación:

DialogResult dialogResult = MessageBox.Show("Sure", "Please Confirm Your Action", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

2
if (MessageBox.Show("Please confirm before proceed" + "\n" + "Do you want to Continue ?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{
//do something if YES
}

else

{
//do something if NO
}

Aparecerá un cuadro de mensaje como este.


0
dynamic MsgResult = this.ShowMessageBox("Do you want to cancel all pending changes ?", "Cancel Changes", MessageBoxOption.YesNo);

if (MsgResult == System.Windows.MessageBoxResult.Yes)
{
    enter code here
}
else 
{
    enter code here
}

Consulta más detalles desde aquí


0

Este código simple funcionó para mí. Lo tomé de MSDN aquí:

https://social.msdn.microsoft.com/Forums/en-US/d1092a96-96b0-4ca4-b716-0c8e55e42ee9/how-can-i-manage-messagebox-result-?forum=Vsexpressvcs

if (System.Windows.Forms.MessageBox.Show
            ("Are you sure you want to add the audit?", "Add",
            System.Windows.Forms.MessageBoxButtons.YesNo, 
            System.Windows.Forms.MessageBoxIcon.Question)
            ==System.Windows.Forms.DialogResult.Yes)                
        // Do stuff after 'YES is clicked'
        else
        // DO stuff after 'NO is clicked'

0

Prueba esto:

if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    Do something here for 'Yes'...
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.