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?

Petr
quelle

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
}
Mikael Svenson
quelle
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.

SwDevMan81
quelle
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
}
Ben Cawley
quelle
16

Die MessageBox hat produzieren eine DialogResults

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

Sie können die Schaltflächen auch einfach genug angeben. Weitere Dokumentation finden Sie unter http://msdn.microsoft.com/en-us/library/ba2a6d06.aspx

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

Khateeb321
quelle
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
user2422690
quelle
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);
Alston Antony
quelle
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.

Sudhakar MuthuKrishnan
quelle
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

Hart
quelle
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'
Kyle Julé
quelle
0

Versuche dies:

if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    Do something here for 'Yes'...
}
Ken
quelle