2010-10-15 7 views

risposta

17

Esempio (leggermente modificato) da 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 
} 

Addendum: Nel caso in cui siete ancora in .NET 2.0 e non hanno accesso alla parola var, dichiarare result come DialogResult. Vale a dire:

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

Missed il fatto che questo è stato etichettato con WPF, quindi se si sta utilizzando che allora si sarebbe utilizzare leggermente (ma non troppo) diverso System.Windows.MessageBox classe invece di sistema. Windows.Forms.Messagebox. L'interazione è in gran parte la stessa, ma utilizza l'enumerazione MessageBoxResult invece di DialogResult, l'enum MessageBoxImage invece di MessageBoxIcon e l'enum MessageBoxButton invece di MessageBoxButtons (plurale). Si dovrebbe essere in grado di fare qualcosa di simile:

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 non è accurato da una posizione WPF, vedere la mia risposta ... –

0

Ecco un esempio:

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

Dal momento che il tag afferma WPF e NON WinForms, sarà necessario fare qualcosa di simile questo per 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 
} 

Inoltre i dialoghi vengono gestiti con ith diversamente in WPF pure, nota l'assenza di 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 di in WPF sono azioni asincrone. Devi gestire l'evento Chiudi e all'interno del tuo evento close puoi eseguire la tua logica.

2

Il migliore per me è

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 
     } 
Problemi correlati