9

anのYesNoCancelDialogResultをチェックするために使用しようとしました。次のコードを使用していますが、問題はありません。Messagebox

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
MessageBoxResult result = MessageBox.Show(
"Save changes before closing?",
"Warning",     
MessageBoxButton.YesNoCancel,
MessageBoxImage.Question);

次に、結果を使用して確認します

于 2011-11-17T15:38:20.660 に答える
1

問題はDialogResultフォームのプロパティでもあり、コンパイラはこのプロパティを参照していると見なします。

ここにはいくつかの選択肢があります。

  • タイプの完全修飾名を使用するSystem.Windows.Forms.DialogResult
  • varコンパイラに型を認識させ、名前の競合を取り除くために使用します。
于 2011-06-07T12:20:22.313 に答える
1

dlgResultとして宣言してみてくださいvar。その後、動作するはずです

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

またMessageBox.ShowWPFでは、MessageBoxResultではなくMessageBoxResultを返しDialogResultます。WindowsFormsDialogResultで使用されます。

于 2011-06-07T12:14:21.720 に答える
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 に答える