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.