2010-10-15 14 views

Respuesta

17

Ejemplo (ligeramente modificada) de the docs:

const string message = 
    "Are you sure that you would like to close the form?"; 
const string caption = "Form Closing"; 
var result = MessageBox.Show(message, caption, 
          MessageBoxButtons.YesNo, 
          MessageBoxIcon.Question); 

// If the no button was pressed ... 
if (result == DialogResult.No) 
{ 
    //Do something for No 
} 
else if (result == DialogResult.Yes) 
{ 
    //Do something else for Yes 
} 

Adición: En el caso de que todavía estás en .NET 2.0 y no tiene acceso a la palabra clave var, declarar result como DialogResult. Es decir:

DialogResult result = MessageBox.Show(...); 

se perdió el hecho de que este fue etiquetado con WPF, por lo que si usted está usando que entonces estaría utilizando el un poco (pero no demasiado) System.Windows.MessageBox diferente clase en lugar de Sistema. Windows.Forms.Messagebox. La interacción es básicamente la misma, pero también utiliza la enumeración MessageBoxResult en lugar de DialogResult, la enumeración MessageBoxImage en lugar de MessageBoxIcon y la enumeración MessageBoxButton en lugar de MessageBoxButtons (plural). Usted debe ser capaz de hacer algo como esto:

const string message = 
     "Are you sure that you would like to close the form?"; 
const string caption = "Form Closing"; 
MessageBoxResult result = MessageBox.Show(message, caption, 
           MessageBoxButton.YesNo, 
           MessageBoxImage.Question); 

if (result == MessageBoxResult.No) 
{ 
    // Do something for No 
} 
else if (result == MessageBoxResult.Yes) 
{ 
    // Do something else for Yes 
} 
+0

DialogResult no es exacta desde una postura de WPF, ver mi respuesta ... –

0

Aquí se muestra un ejemplo:

DialogResult userSelection = MessageBox.Show("Some question","Question",MessageBoxButtons.YesNo,MessageBoxIcon.Question); 

// Do something with userSelection 
1
DialogResult result = MessageBox.Show("Some Text", "Title", MessageBoxButtons.YesNoCancel); 

if(result == DialogResult.Yes) 
{ 
    // do something 
} 
4

Dado que la etiqueta indica WPF y NO WinForms, tendrá que hacer algo como esto para un MessageBox:

MessageBoxResult result = MessageBox.Show("Foo Bar?", "Confirmation", MessageBoxButton.YesNoCancel); 
if (result == MessageBoxResult.Yes) 
{ 
    // yeah yeah yeah stuff 
} 
else if (result == MessageBoxResult.No) 
{ 
    // no no no stuff 
} 
else 
{ 
    // forget about it 
} 

Además los diálogos se reparten w ITH diferente en WPF, así, tenga en cuenta la ausencia de DialogResult:

SomeDialog dialog = new SomeDialog(); 
dialog.ShowDialog(); 

if (dialog.DialogResult.HasValue && dialog.DialogResult.Value) 
    MessageBox.Show("Clicked ok"); 
else 
    MessageBox.Show("Clicked cancel"); 
0

ChildWindow de WPF en acciones son asíncronos. Tienes que manejar el evento Cerrar, y dentro de tu evento cercano puedes realizar tu lógica.

2

Lo mejor para mí es

if (MessageBox.Show("Are you sure you want to close the window ?", "Question", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No) 
     { 
      //do NO stuff 
     } 
     else 
     { 
      //do YES stuff 
     } 
Cuestiones relacionadas