Невозможно использовать DialogResult - PullRequest
9 голосов
/ 07 июня 2011

Я пытался использовать DialogResult для проверки Messagebox YesNoCancel .Я использую следующий код, с которым я не вижу никаких проблем:

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

Но Visual Studio выдает ошибку, говоря

'Система.Windows.Window.DialogResult 'является' свойством ', но используется как' тип '

Ответы [ 6 ]

10 голосов
/ 07 июня 2011

Здесь есть конфликт между перечислением DialogResult и Window.DialogResult Свойством .

Чтобы решить эту проблему, вы можете использовать полное имя перечисления. Как следующее:

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

Однако, поскольку вы используете WPF , используйте Перечисление MessageBoxResult , чтобы получить результат сообщения:

MessageBoxResult result = 
    MessageBox.Show("Would you like to see the simple version?", 
    "MessageBox Example", MessageBoxButton.OKCancel);
1 голос
/ 17 ноября 2011
MessageBoxResult result = MessageBox.Show(
"Save changes before closing?",
"Warning",     
MessageBoxButton.YesNoCancel,
MessageBoxImage.Question);

затем используйте результат для проверки

1 голос
/ 07 июня 2011

просто попробуйте с MessageBoxResult

MessageBox возвращает значения перечисления MessageBoxResult

            MessageBoxResult dlgResult = MessageBox.Show("Save changes before closing?","Warning", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
        Console.WriteLine(dlgResult);
1 голос
/ 07 июня 2011

DialogResult не тип, это свойство, вы хотите тип MessageBoxResult

Я вижу по вопросу, что вы не используете winforms. Таким образом, код будет читать,

MessageBoxResult result = MessageBox.Show(
    "Save changes before closing?",
    "Warning",     
    MessageBoxButton.YesNoCancel,
    MessageBoxImage.Question);
1 голос
/ 07 июня 2011

Проблема в том, что DialogResult также является свойством формы, и компилятор считает, что вы ссылаетесь на это свойство.

У вас есть несколько вариантов здесь:

  • Используйте полное имя типа System.Windows.Forms.DialogResult
  • Используйте var, чтобы компилятор выяснил тип и избавился от коллизии имен
1 голос
/ 07 июня 2011

Попробуйте объявить dlgResult как var.Тогда он должен работать

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

Также MessageBox.Show в WPF возвращает MessageBoxResult , а не DialogResult.DialogResult используется в WindowsForms .

...