代码之家  ›  专栏  ›  技术社区  ›  sourcenouveau

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

  •  8
  • sourcenouveau  · 技术社区  · 16 年前

    OpenFileDialog ShowDialog 方法返回一个可为空的布尔值,如果用户单击“确定”,则设置为“真”;如果用户单击“取消”,则设置为“假”。什么时候回来 null ?文件没有说明。

    3 回复  |  直到 16 年前
        1
  •  11
  •   Community CDub    8 年前

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

    ShowDialog将始终返回true或 错误的。…只有在对话 在它被关闭之前 DialogResult为空。

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

    以及: Why is DialogResult a nullable bool in WPF?

        2
  •  3
  •   Oren Trutner    16 年前

    根据 .NET reflector , Microsoft.Win32.OpenFileDialog.ShowDialog 由基类实现, Microsoft.Win32.CommonDialog . 该实现只有一个返回子句:

    return new bool?(this.RunDialog(activeWindow));
    

    RunDialog 返回A bool 不是 bool? .

    布尔? 只是一个 C# shorthand 对于 System.Nullable<bool> . 这个 constructor of System.Nullable<bool> 再次根据Reflector,将Nullable的值设置为其参数,并将其HasValue属性标记为true。

    所以…你不应该得到 null 结果。快速测试确认在不取消(红色x按钮)的情况下关闭对话框确实会返回 false 价值,而不是 无效的 .

    OpenFileDialog的Windows窗体版本返回一个DialogResult,它具有 wider range of values .

        3
  •  1
  •   Nir    16 年前

    我猜OpenFileDialog会返回bool?为了与实际可以返回空结果的其他WPF对话框保持一致。