¿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?

Petr
fuente

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
}
Mikael Svenson
fuente
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.

SwDevMan81
fuente
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
}
Ben Cawley
fuente
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 ...

Khateeb321
fuente
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
usuario2422690
fuente
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);
Alston Antony
fuente
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.

Sudhakar MuthuKrishnan
fuente
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í

Duro
fuente
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'
Kyle Julé
fuente
0

Prueba esto:

if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    Do something here for 'Yes'...
}
Conocer
fuente