OpenFileDialog的ShowDialog方法返回一个可以为空的布尔值,如果用户单击确定则设置为true,如果单击取消则设置为false。什么时候返回null
?文档没有说明。
答案 0 :(得分:11)
这在下面链接的问题中说明,但我在这里提到Programming WPF (Chris Sells, Ian Griffiths)说:
ShowDialog将始终返回true或 假。 ......只有在对话框出现之后 已被展示但在它关闭之前 是DialogResult null。
答案 1 :(得分:3)
根据.NET reflector,Microsoft.Win32.OpenFileDialog.ShowDialog
由基类Microsoft.Win32.CommonDialog
实现。该实现只有一个return子句:
return new bool?(this.RunDialog(activeWindow));
RunDialog
会返回bool
,而不是bool?
。
bool?
只是System.Nullable<bool>
的{{3}}。根据反射器,C# shorthand再次将可为空的值设置为其参数,并将其hasValue属性标记为true。
所以......你不应该得到null
结果。快速测试确认关闭对话框而不取消(红色x按钮)确实返回false
值,而不是null
。
OpenFileDialog的Windows窗体版本返回一个DialogResult,其constructor of System.Nullable<bool>
。
答案 2 :(得分:1)
我的猜测是OpenFileDialog返回bool?与其他实际可以返回null结果的WPF对话框保持一致。