Когда Microsoft.Win32.OpenFileDialog.ShowDialog() возвращает значение null?
-
12-09-2019 - |
Вопрос
OpenFileDialog's Показать каталог метод возвращает логическое значение с возможностью обнуления, равное true, если пользователь нажал "ОК", или false, если он нажал "Отмена".Когда он возвращается null
?В документации об этом не сказано.
Решение
Об этом говорится в вопросах, приведенных ниже, но здесь я упомяну, что Программирование WPF (Крис Селлс, Иэн Гриффитс) говорит:
ShowDialog всегда возвращает true или false....Только после того, как диалоговое окно было показано, но до того, как оно было закрыто значение DialogResult равно нулю.
Похожий вопрос: Когда ShowDialog() вернет значение null?
Другие советы
В соответствии с .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, которые на самом деле могут возвращать нулевой результат.