Microsoft.Win32.OpenFileDialog.ShowDialog()何时返回null?

时间:2009-08-11 17:43:06

标签: wpf winapi openfiledialog savefiledialog

OpenFileDialogShowDialog方法返回一个可以为空的布尔值,如果用户单击确定则设置为true,如果单击取消则设置为false。什么时候返回null?文档没有说明。

3 个答案:

答案 0 :(得分:11)

这在下面链接的问题中说明,但我在这里提到Programming WPF (Chris Sells, Ian Griffiths)说:

  

ShowDialog将始终返回true或   假。 ......只有在对话框出现之后   已被展示但在它关闭之前   是DialogResult null。

类似的问题:When would ShowDialog() return null?

并且:Why is DialogResult a nullable bool in WPF?

答案 1 :(得分:3)

根据.NET reflectorMicrosoft.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对话框保持一致。