Jak utworzyć okno komunikatu z opcjami „Tak”, „Nie” i DialogResult?

345

Chcę stworzyć prosty MessageBox na tak / nie, ale myślę, że zaprojektowanie takiego formularza jest nonsensem. Myślałem, że mogę użyć MessageBox, dodać przyciski itp., Aby to osiągnąć. To proste, ale skoro nie zwrócono DialogResult, jak mogę uzyskać wynik?

Petr
źródło

Odpowiedzi:

791

To powinno to zrobić:

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
źródło
6
Odpowiedź dotyczyła systemu Windows, a nie Windows Phone, o którym niewiele wiem :)
Mikael Svenson
22
„DialogResult” nie działa w wpf. Musisz użyć „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;
}

Klasa MessageBox jest tym, czego szukasz.

SwDevMan81
źródło
32
MessageBox.Show(title, text, messageboxbuttons.yes/no)

Zwraca DialogResult, który możesz sprawdzić.

Na przykład,

if(MessageBox.Show("","",MessageBoxButtons.YesNo) == DialogResult.Yes)
{
   //do something
}
Ben Cawley
źródło
16

MessageBox ma produkować DialogResults

DialogResult r = MessageBox.Show("Some question here");

Możesz także łatwo określić przyciski. Więcej dokumentacji można znaleźć na stronie http://msdn.microsoft.com/en-us/library/ba2a6d06.aspx

David
źródło
12

Posługiwać się:

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 jest używany w Windows Phone zamiast DialogResult ...

Khateeb321
źródło
6

Możesz również użyć tego wariantu z ciągami tekstowymi, oto kompletny zmieniony kod (Kod z Mikael), przetestowany w 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
}

Możesz później

.YesNo

wstaw ikonę wiadomości

, MessageBoxIcon.Question
użytkownik2422690
źródło
5

@Mikael Svenson odpowiedź jest poprawna. Chciałem tylko dodać do tego mały dodatek:

Ikona skrzynki wiadomości może być również dołączona, ma dodatkową właściwość, taką jak poniżej:

DialogResult dialogResult = MessageBox.Show("Sure", "Please Confirm Your Action", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
Alston Antony
źródło
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
}

Wyświetli się takie okno komunikatu.

Sudhakar MuthuKrishnan
źródło
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
}

Sprawdź więcej szczegółów tutaj

Szorstki
źródło
0

Ten prosty kod działał dla mnie. Zdobyłem go z MSDN tutaj:

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é
źródło
0

Spróbuj tego:

if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    Do something here for 'Yes'...
}
Rozpoznać
źródło