无法使用DialogResult

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

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

Visual Studio引发了我的错误说法

‘System.Windows.Window.DialogResult’是’属性’,但用作’类型’

DialogResult Enumeration和Window.DialogResult属性之间存在冲突。

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

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

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

 MessageBoxResult result = MessageBox.Show("Would you like to see the simple version?", "MessageBox Example", MessageBoxButton.OKCancel); 

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

你有几个选择:

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

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

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

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

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

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

另外, WPF下的MessageBox.Show确实返回MessageBoxResult而不是DialogResultDialogResult用于WindowsForms

试试MessageBoxResult

MessageBox将返回MessageBoxResult枚举值

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

然后用结果来检查