Когда Microsoft.Win32.OpenFileDialog.ShowDialog () возвращает ноль? - PullRequest
8 голосов
/ 11 августа 2009

OpenFileDialog * s ShowDialog метод возвращает логическое значение, допускающее значение NULL, для которого установлено значение true, если пользователь нажал кнопку OK, или false, если он нажал кнопку Отмена Когда возвращается null? В документации не сказано.

Ответы [ 3 ]

11 голосов
/ 11 августа 2009

Это указано в вопросах, связанных ниже, но я упомяну здесь, что Программирование WPF (Крис Селлс, Ян Гриффитс) говорит:

ShowDialog всегда будет возвращать true или ложный. ... только после диалога было показано, но прежде чем он был закрыт является DialogResult null.

Аналогичный вопрос: Когда ShowDialog () вернет ноль?

И: Почему DialogResult является недействительным bool в WPF?

3 голосов
/ 11 августа 2009

Согласно отражателю .NET , Microsoft.Win32.OpenFileDialog.ShowDialog реализован базовым классом Microsoft.Win32.CommonDialog. Эта реализация имеет только одно возвращаемое предложение:

return new bool?(this.RunDialog(activeWindow));

RunDialog возвращает bool, а не bool?.

bool? это просто C # сокращение для System.Nullable<bool>. Конструктор из System.Nullable<bool>, опять же, согласно отражателю, устанавливает значение Nullable для его параметра и отмечает его свойство hasValue как true.

Итак ... вы никогда не должны получить null результат. Быстрый тест подтверждает, что закрытие диалога без отмены (красная кнопка x) действительно возвращает значение false, а не null.

Версия OpenFileDialog для Windows Forms возвращает DialogResult, который имеет более широкий диапазон значений .

1 голос
/ 12 августа 2009

Я предполагаю, что OpenFileDialog возвращает bool? быть совместимым с другими диалогами WPF, которые на самом деле могут возвращать нулевой результат.

...