不能使用DialogResult

时间:2011-06-07 12:11:55

标签: c# wpf dialogresult

我尝试使用DialogResult来检查Messagebox YesNoCancel 。我正在使用以下代码,我认为没有任何问题:

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

但是 Visual Studio 会让我错误地说

  

'System.Windows.Window.DialogResult'   是一个'财产',但用作一个   '类型'

6 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

尝试将dlgResult声明为var。然后它应该工作

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

WPF 下的MessageBox.Show确实会返回MessageBoxResult而不是DialogResult WindowsForms 中使用了DialogResult

答案 2 :(得分:1)

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

你有几个选择:

  • 使用类型System.Windows.Forms.DialogResult
  • 的完全限定名称
  • 使用var让编译器找出类型并删除名称冲突

答案 3 :(得分:1)

DialogResult不是类型,它是属性,您想要类型MessageBoxResult

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

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

答案 4 :(得分:1)

尝试使用MessageBoxResult

MessageBox将返回MessageBoxResult枚举值

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

答案 5 :(得分:1)

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

然后使用结果检查