OpenFileDialog 的 ShowDialog 方法返回一个可空布尔值,如果用户单击了“确定”则设置为 true,如果用户单击了“取消”则设置为 false。那么它什么时候会返回 null
呢?文档没有说明。
OpenFileDialog 的 ShowDialog 方法返回一个可空布尔值,如果用户单击了“确定”则设置为 true,如果用户单击了“取消”则设置为 false。那么它什么时候会返回 null
呢?文档没有说明。
以下问题中已经提到,但我在这里要提到Programming WPF (Chris Sells, Ian Griffiths)所说的:
ShowDialog将始终返回true或false。......只有在对话框已经显示但尚未关闭之后,DialogResult才为null。
Microsoft.Win32.OpenFileDialog.ShowDialog
是由一个基类 Microsoft.Win32.CommonDialog
实现的。该实现仅有一个返回子句。return new bool?(this.RunDialog(activeWindow));
RunDialog
返回的是bool
,而不是bool?
。
bool?
只是System.Nullable<bool>
的C#简写。根据反射器的显示,System.Nullable<bool>
的构造函数将可空类型的值设置为其参数,并将其hasValue属性标记为true。
因此...您不应该得到null
结果。快速测试确认,关闭对话框而不取消(红色x按钮)确实返回false
值,而不是null
。
OpenFileDialog的Windows窗体版本返回一个DialogResult,其中包含更广泛的值范围。
我的猜测是OpenFileDialog返回bool?以保持与其他实际可以返回空结果的WPF对话框一致。