9

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

4

3 回答 3

12

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

ShowDialog 将始终返回 true 或 false。...只有在显示对话框之后但在关闭之前,DialogResult 才为空。

类似的问题:ShowDialog() 什么时候返回 null?

并且:为什么 DialogResult 在 WPF 中是可为空的布尔值?

于 2009-08-11T18:05:06.140 回答
3

根据.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,它具有更广泛的值

于 2009-08-11T18:06:23.127 回答
1

My guess is that OpenFileDialog returns bool? to be consistent with other WPF dialogs that actually can return a null result.

于 2009-08-12T08:17:59.347 回答