58

我想做一个 MessageBox 确认。这是消息框:

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

我想做这样的事情(在伪代码中):

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

我怎么能在 C# 中做到这一点?

4

5 回答 5

139
DialogResult result = MessageBox.Show("Do you want to save changes?", "Confirmation", MessageBoxButtons.YesNoCancel);
if(result == DialogResult.Yes)
{ 
    //...
}
else if (result == DialogResult.No)
{ 
    //...
}
else
{
    //...
} 
于 2012-05-27T20:44:56.583 回答
13

您也可以在一行中执行此操作:

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

如果你想在顶部显示一个消息框:

if (MessageBox.Show(new Form() { TopMost = true }, "Text", "Text", MessageBoxButtons.YesNo) == DialogResult.Yes)
于 2012-05-27T20:52:10.713 回答
6

如果您使用的是WPF并且之前的答案没有帮助,您可以使用以下方法检索结果:

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

if (result == MessageBoxResult.Yes)
{
    // Do something
}
于 2016-01-07T04:04:33.583 回答
2

这个答案对我不起作用,所以我继续访问MSDN。在那里我发现现在代码应该是这样的:

//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)
{
    ...
}

希望能帮助到你

于 2014-10-17T10:03:00.150 回答
2

我建议不要使用 if 语句,而是使用 switch,我尽量避免使用 if 语句。

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;
}
于 2016-07-23T20:30:25.627 回答