Wie erstelle ich ein Meldungsfeld mit den Optionen "Ja", "Nein" und einem Dialogergebnis?


345

Ich möchte eine einfache Ja / Nein-MessageBox auswählen, aber ich denke, es ist Unsinn, ein Formular dafür zu entwerfen. Ich dachte, ich könnte MessageBox verwenden, Schaltflächen hinzufügen usw., um dies zu erreichen. Es ist einfach, aber wie kann ich das Ergebnis abrufen, da kein DialogResult zurückgegeben wird?

Antworten:


790

Dies sollte es tun:

DialogResult dialogResult = MessageBox.Show("Sure", "Some Title", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    //do something
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}

6
Die Antwort war für Windows, nicht für Windows Phone, von dem ich nicht viel weiß :)
Mikael Svenson

22
'DialogResult' funktioniert nicht in wpf. Sie müssen 'MessageBoxResult' verwenden.
Matsolof

56
DialogResult dr = MessageBox.Show("Are you happy now?", 
                      "Mood Test", MessageBoxButtons.YesNo);
switch(dr)
{
   case DialogResult.Yes:
      break;
   case DialogResult.No:
      break;
}

Die MessageBox- Klasse ist genau das, wonach Sie suchen.


32
MessageBox.Show(title, text, messageboxbuttons.yes/no)

Dies gibt ein DialogResult zurück, das Sie überprüfen können.

Zum Beispiel,

if(MessageBox.Show("","",MessageBoxButtons.YesNo) == DialogResult.Yes)
{
   //do something
}


12

Verwenden:

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 wird unter Windows Phone anstelle von DialogResult verwendet ...


6

Sie können diese Variante auch mit Textzeichenfolgen verwenden. Hier ist der vollständig geänderte Code (Code von Mikael), der in C # 2012 getestet wurde:

// 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
}

Sie können nach

.YesNo

Fügen Sie ein Nachrichtensymbol ein

, MessageBoxIcon.Question

5

@Mikael Svensons Antwort ist richtig. Ich wollte nur eine kleine Ergänzung hinzufügen:

Das Messagebox-Symbol kann auch enthalten sein und verfügt über eine zusätzliche Eigenschaft wie die folgende:

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
}

Es wird ein Meldungsfeld wie dieses angezeigt.


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
}

Weitere Details finden Sie hier


0

Dieser einfache Code hat bei mir funktioniert. Ich habe es hier von MSDN geholt:

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

Versuche dies:

if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    Do something here for 'Yes'...
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.