处理来自消息框的回复 c#。

5

如果用户点击“是”,该怎样处理消息框回复示例?如果用户点击“否”,该怎样处理另一件事情?

7个回答

22

以下是稍微修改过的示例,来自文档

const string message =
    "Are you sure that you would like to close the form?";
const string caption = "Form Closing";
var result = MessageBox.Show(message, caption,
                             MessageBoxButtons.YesNo,
                             MessageBoxIcon.Question);

// If the no button was pressed ...
if (result == DialogResult.No)
{
    //Do something for No
} 
else if (result == DialogResult.Yes) 
{
    //Do something else for Yes
}

补充说明: 如果你仍在使用 .NET 2.0 并且没有访问 var 关键字的权限,则需要将 result 声明为 DialogResult。即:

DialogResult result = MessageBox.Show(...);

错过了这个标记为WPF的事实,所以如果您正在使用它,那么您将使用稍微不同的System.Windows.MessageBox类,而不是System.Windows.Forms.Messagebox。交互大致相同,但还使用MessageBoxResult枚举而不是DialogResult,MessageBoxImage枚举而不是MessageBoxIcon,以及MessageBoxButton枚举而不是MessageBoxButtons(复数)。您应该能够执行以下操作:
const string message =
        "Are you sure that you would like to close the form?";
const string caption = "Form Closing";
MessageBoxResult result = MessageBox.Show(message, caption,
                                 MessageBoxButton.YesNo,
                                 MessageBoxImage.Question);

if (result == MessageBoxResult.No)
{
    // Do something for No
}
else if (result == MessageBoxResult.Yes)
{
    // Do something else for Yes
}

4

由于标签中声明了 WPF 而非 WinForms,因此您需要像这样处理 MessageBox:

MessageBoxResult result = MessageBox.Show("Foo Bar?", "Confirmation", MessageBoxButton.YesNoCancel);
if (result == MessageBoxResult.Yes)
{
    // yeah yeah yeah stuff
}
else if (result == MessageBoxResult.No)
{
    // no no no stuff
}
else
{
    // forget about it
}

此外,在WPF中,对话框的处理方式也有所不同,请注意缺少DialogResult
SomeDialog dialog = new SomeDialog();
dialog.ShowDialog();

if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
     MessageBox.Show("Clicked ok");
else
     MessageBox.Show("Clicked cancel");

3

2
我最喜欢的是:
if (MessageBox.Show("Are you sure you want to close the window ?", "Question", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
        {
            //do NO stuff
        }
        else
        {
            //do YES stuff
        }

1
DialogResult result = MessageBox.Show("Some Text", "Title", MessageBoxButtons.YesNoCancel);

if(result == DialogResult.Yes)
{
    // do something
}

0

这里是一个例子:

DialogResult userSelection = MessageBox.Show("Some question","Question",MessageBoxButtons.YesNo,MessageBoxIcon.Question);

// Do something with userSelection   

0

WPF中的子窗口是异步操作。您必须处理Close事件,然后在close事件内部执行逻辑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接