2011-06-07 50 views
9

我试图使用DialogResult检查MessageboxYesNoCancel。我使用下面的代码,我看不出有任何问题:无法使用DialogResult

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

的Visual Studio引发我错误说

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

+7

我觉得你混合使用WPF和Winforms代码。检查[this](http://marlongrech.wordpress。com/2008/05/28/wpf-dialogs-and-dialogresult /)链接以获取更多信息。我想你正在寻找'MessageBoxResult'而不是'DialogResult'。 – 2011-06-07 12:17:42

回答

10

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

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

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

然而,由于使用的是WPF,使用MessageBoxResult Enumeration得到消息的结果:

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

KMC不使用winforms – Jodrell 2011-06-07 12:25:18

+0

@Jodrell:应用... – 2011-06-07 12:30:13

1

试图声明dlgResult作为var。那么它应该工作

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

而且MessageBox.ShowWPF不会返回MessageBoxResult而不是DialogResultDialogResult用于WindowsForms

+5

或者更确切地说,使用'var'来隐藏问题并避免理解 – Jodrell 2011-06-07 12:16:30

+0

@Akram Shahda,编辑 – Jodrell 2011-06-07 12:26:21

1

问题是DialogResult也是形式的财产,编译器认为你在​​引用这个属性。

您有几种选择在这里:

  • 使用类型System.Windows.Forms.DialogResult
  • 使用var的完全合格的名字,让编译器弄清楚类型和摆脱名称冲突
+0

KMC没有使用winforms – Jodrell 2011-06-07 12:25:35

1

DialogResult是不是一种类型,其属性,你想要的类型MessageBoxResult

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

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

只是MessageBoxResult尝试

的MessageBox将返回MessageBoxResult枚举值

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

然后用结果来检查