9

我试图用DialogResult检查一个MessageboxYesNoCancel 。我正在使用以下代码,我认为没有任何问题:

DialogResult dlgResult = MessageBox.Show(
   "Save changes before closing?", 
   "Warning", 
   MessageBoxButton.YesNoCancel, 
   MessageBoxImage.Question);

但是Visual Studio向我抛出错误说

'System.Windows.Window.DialogResult' 是一个“属性”,但用作“类型”

4

6 回答 6

10

DialogResult EnumerationWindow.DialogResult Property之间存在冲突。

要解决此问题,您可以使用枚举的完全限定名称。如下:

System.Windows.Forms.DialogResult dlgResult = ...

但是,由于您使用的是WPF,因此请使用MessageBoxResult Enumeration来获取消息的结果:

MessageBoxResult result = 
    MessageBox.Show("Would you like to see the simple version?", 
    "MessageBox Example", MessageBoxButton.OKCancel);
于 2011-06-07T12:17:43.123 回答
1

尝试声明dlgResultvar. 然后它应该工作

    var dlgResult = 
        MessageBox.Show("Save changes before closing?", 
            "Warning", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

同样MessageBox.ShowWPF下确实返回MessageBoxResult而不是DialogResult. DialogResultWindowsForms中使用。

于 2011-06-07T12:14:21.720 回答
1

问题DialogResult也是表单的属性,编译器认为您正在引用此属性。

您在这里有几个选择:

  • 使用类型的完全限定名称System.Windows.Forms.DialogResult
  • 用于var让编译器找出类型并摆脱名称冲突
于 2011-06-07T12:20:22.313 回答
1

DialogResult不是类型,它是一个属性,你想要类型MessageBoxResult

我可以从你没有使用winforms的问题中看出。所以代码会读,

MessageBoxResult result = MessageBox.Show(
    "Save changes before closing?",
    "Warning",     
    MessageBoxButton.YesNoCancel,
    MessageBoxImage.Question);
于 2011-06-07T12:21:47.913 回答
1

试试 MessageBoxResult

MessageBox 将返回 MessageBoxResult 枚举值

            MessageBoxResult dlgResult = MessageBox.Show("Save changes before closing?","Warning", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
        Console.WriteLine(dlgResult);
于 2011-06-07T12:28:33.387 回答
1
MessageBoxResult result = MessageBox.Show(
"Save changes before closing?",
"Warning",     
MessageBoxButton.YesNoCancel,
MessageBoxImage.Question);

然后使用结果检查

于 2011-11-17T15:38:20.660 回答