Когда Microsoft.Win32.OpenFileDialog.ShowDialog() возвращает значение null?

StackOverflow https://stackoverflow.com/questions/1261910

Вопрос

OpenFileDialog's Показать каталог метод возвращает логическое значение с возможностью обнуления, равное true, если пользователь нажал "ОК", или false, если он нажал "Отмена".Когда он возвращается null?В документации об этом не сказано.

Это было полезно?

Решение

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

ShowDialog всегда возвращает true или false....Только после того, как диалоговое окно было показано, но до того, как оно было закрыто значение DialogResult равно нулю.

Похожий вопрос: Когда ShowDialog() вернет значение null?

И: Почему DialogResult является обнуляемым bool в WPF?

Другие советы

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

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

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

bool? это всего лишь Сокращение C # для System.Nullable<bool>.Тот Самый конструктор System.Nullable<bool>, снова в соответствии с reflector , присваивает значение nullable своему параметру и помечает его свойство HasValue как true.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top