如何使用“是/否”MessageBox的结果

本文关键字:MessageBox 结果 何使用 | 更新日期: 2023-09-27 18:25:19

我正在尝试制作一个程序,为"活动"保留和显示可用和不可用的座位。我得到的错误如下:

"System.Nullable"不包含"Yes"的定义,也找不到接受类型为"System.Nullable"的第一个参数的扩展方法"Yes"(是否缺少using指令或程序集引用?)

("否"也是如此)和

"System.Windows.Window.DialogResult"是一个"属性",但与"类型"类似。

这就是我目前所拥有的:

private void btnSeat1_Click(object sender, RoutedEventArgs e)
{
    if (!Seat1)
    {
        DialogResult Result = MessageBox.Show("This Seat is Available, Would you like to pick it?", "Would you like this seat?", MessageBoxButton.YesNo, MessageBoxImage.Question);
        if (Result == DialogResult.Yes)
        {
            MessageBox.Show("You Reserved this seat");
            btnSeat1.Text = "Reserved";
        }
        else if (Result == DialogResult.No)
        {
            Environment.Exit(0);
        }

注意:我只使用了Environment.Exit作为占位符。这是故意的,将相应地改变。这不是问题的根源。

如何使用“是/否”MessageBox的结果

此行:

DialogResult Result = MessageBox.Show("This Seat is Available, Would you like to pick it?", "Would you like this seat?", MessageBoxButton.YesNo, MessageBoxImage.Question);

实际上应该是这样的:

var Result = MessageBox.Show("This Seat is Available, Would you like to pick it?", "Would you like this seat?", MessageBoxButton.YesNo, MessageBoxImage.Question);

然后,如果您将鼠标悬停在Result上,您可以看到它不是DialogResult,而是MessageBoxResult,或者,如果您更喜欢显式键入它,请尝试:

MessageBoxResult Result = MessageBox.Show(...

所以你可以在if语句中这样使用它:

if (Result == MessageBoxResult.Yes)
{
    MessageBox.Show("You Reserved this seat");
    btnSeat1.Text = "Reserved";
}
else if (Result == MessageBoxResult.No)
{
    Environment.Exit(0);
}

您得到这个错误是因为DialogResult实际上是Window类的一个属性,并且您正试图像使用它的类型一样使用它(正如编译器所说)。