2012-05-27 17 views
37

Chcę utworzyć potwierdzenie MessageBox. Oto komunikat:C# Okno dialogowe komunikatu MessageBox

MessageBox.Show("Do you want to save changes?", "Confirmation", messageBoxButtons.YesNoCancel); 

I chcę zrobić coś takiego (w Pseudokod):

if (MessageBox.Result == DialogResult.Yes) 
    ; 
else if (MessageBox.Result == DialogResult.No) 
    ; 
else 
    ; 

Jak mogę to zrobić w C#?

Odpowiedz

93
DialogResult result = MessageBox.Show("Do you want to save changes?", "Confirmation", MessageBoxButtons.YesNoCancel); 
if(result == DialogResult.Yes) 
{ 
    //... 
} 
else if (result == DialogResult.No) 
{ 
    //... 
} 
else 
{ 
    //... 
} 
+0

Dziękuję bardzo ... to było bardzo proste .. :) – biox

+0

To jest to, co chcę, dziękuję .... –

7

Można również zrobić to w jednym rzędzie:

if (MessageBox.Show("Text", "Title", MessageBoxButtons.YesNo) == DialogResult.Yes) 

A jeśli chcesz pokazać messagebox na top:

if (MessageBox.Show(new Form() { TopMost = true }, "Text", "Text", MessageBoxButtons.YesNo) == DialogResult.Yes) 
+0

Tak, ale na "else if", jeśli mogę umieścić else if (MessageBox. Pokaż ("Tekst", "Tytuł", MessageBoxButtons.YesNo) == DialogResult.No) wiadomość ponownie pojawi się – biox

+0

Oczywiście, ale jeśli masz tylko dwie opcje Tak/Nie, nie masz powodu, aby używać innych, jeśli ... – sczdavos

+0

Tak, ale zgadzasz się, ale mam 3 Tak, Nie i Anuluj: D – biox

2

Ta odpowiedź nie działa na mnie tak ja przeszedł do MSDN. Tam okazało się, że teraz kod powinien wyglądać tak:

//var is of MessageBoxResult type 
var result = MessageBox.Show(message, caption, 
          MessageBoxButtons.YesNo, 
          MessageBoxIcon.Question); 

// If the no button was pressed ... 
if (result == DialogResult.No) 
{ 
    ... 
} 

Nadzieja pomaga

3

Jeśli używasz WPF i poprzednie odpowiedzi nie pomagają, można pobrać wynik za pomocą:

var result = MessageBox.Show("Message", "caption", MessageBoxButton.YesNo, MessageBoxImage.Question); 

if (result == MessageBoxResult.Yes) 
{ 
    // Do something 
} 
2

Zamiast używać instrukcji if, które mogą sugerować użycie przełącznika, staram się unikać instrukcji if, jeśli to możliwe.

var result = MessageBox.Show(@"Do you want to save the changes?", "Confirmation", MessageBoxButtons.YesNoCancel); 
switch (result) 
{ 
    case DialogResult.Yes: 
     SaveChanges(); 
     break; 
    case DialogResult.No: 
     Rollback(); 
     break; 
    default: 
     break; 
}