OpenFileDialog的ShowDialog方法返回一个可为空的布尔值,如果用户单击确定则设置为 true,如果用户单击取消则设置为 false。它什么时候回来null
?文档没有说。
3 回答
这在下面链接的问题中有所说明,但我会在这里提到Programming WPF(Chris Sells,Ian Griffiths)说:
ShowDialog 将始终返回 true 或 false。...只有在显示对话框之后但在关闭之前,DialogResult 才为空。
根据.NET 反射器,Microsoft.Win32.OpenFileDialog.ShowDialog
由基类实现,Microsoft.Win32.CommonDialog
. 该实现只有一个返回子句:
return new bool?(this.RunDialog(activeWindow));
RunDialog
返回 a bool
,而不是 a bool?
。
bool?
只是. _ _ System.Nullable<bool>
的构造函数System.Nullable<bool>
,再次根据反射器,将 nullable 的值设置为其参数,并将其 hasValue 属性标记为 true。
所以......你不应该得到null
结果。快速测试确认关闭对话框而不取消(红色 x 按钮)确实返回一个false
值,而不是 a null
。
Windows 窗体版本的 OpenFileDialog 返回一个 DialogResult,它具有更广泛的值。
My guess is that OpenFileDialog returns bool? to be consistent with other WPF dialogs that actually can return a null result.