2010-10-15 20 views

Antwort

17

Beispiel (leicht modifiziert) aus 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 
} 

Nachtrag: Für den Fall, dass Sie immer noch sind auf .NET 2.0 und haben keinen Zugriff auf die var Stichwort, erklären result als DialogResult. Dh:

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

Verpasste die Tatsache, dass diese mit WPF markiert wurde, so dass, wenn Sie verwenden, dass dann würden Sie das leicht werden (aber nicht zu viel) unterschiedliche System.Windows.MessageBox Klasse anstelle des Systems. Windows.Forms.MessageBox. Die Interaktion ist weitgehend die gleiche, verwendet aber auch die MessageBoxResult enum anstelle von DialogResult, die MessageBoxImage enum anstelle von MessageBoxIcon, und die MessageBoxButton enum anstelle von MessageBoxButtons (Plural). Sie sollten so etwas wie diese in der Lage sein zu tun:

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 aus einer WPF-Haltung ist nicht korrekt, meine Antwort sehen ... –

0

Hier ist ein Beispiel:

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

Da der Tag heißt es WPF und NICHT WinForms, müssen Sie etwas tun, wie dies für eine 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 
} 

Zusätzlich werden die Dialoge w ith anders in WPF als auch beachten, das Fehlen von DialogResult:

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

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

Child die in WPF sind asynchrone Aktionen. Sie müssen das Close-Ereignis behandeln, und in Ihrem Close-Event können Sie dann Ihre Logik ausführen.

2

Das beste für mich ist

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 
     }