如何使用来自Yes/No MessageBox的结果?

6
我正在制作一个程序,用于预订和展示“事件”中的可用和不可用座位。我遇到的错误如下:
'System.Nullable'没有包含名称为'Yes'的定义,也没有找到接受类型为'System.Nullable'的第一个参数的扩展方法'Yes'(是否缺少了使用指令或程序集引用?)
("No"同样适用)
以下是我的程序代码:
' 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作为占位符。这是有意的,并将相应进行更改。它不是问题的根源。


3
这段代码中具体有哪些问题? - David
2
如果用户选择“否”,您是否真的想退出程序? - Ron Beyer
是的,你应该使用一个 return; 语句。 - Fᴀʀʜᴀɴ Aɴᴀᴍ
我只是使用了Environment.Exit(0)作为一个占位符。这是有意为之的。 - Nathan
1
看起来这个方法所在的类包含一个名为DialogResult的属性。 - Philippe
显示剩余2条评论
1个回答

20

这一行:

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类的一个属性,而您试图像使用类型一样使用它(正如编译器所说)。

谢谢Hans,我必须再做一些更改,但你是对的,应该使用WPF而不是Winforms。 - Ron Beyer
谢谢!非常感谢您的反馈! :) - Nathan
如果你的应用程序是WinForms应用程序,请使用DialogResult。如果你的应用程序是WPF/Silverlight应用程序,请使用MessageBoxResult。命名空间不同:System.Windows.Forms(Winforms)与System.Windows(WPF)。 - nam

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