2011-06-07 35 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); 

然後用結果來檢查