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?

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
}

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.


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
}


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 ...


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

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);

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.


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


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'

0

Spróbuj tego:

if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    Do something here for 'Yes'...
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.