【问题标题】:ShowDialog return type: Form vs. WindowShowDialog 返回类型:Form vs. Window
【发布时间】:2011-02-08 21:20:42
【问题描述】:

在 WPF / .Net 中,System.Windows.WindowSystem.Windows.Forms.Form 都有 .ShowDialog 方法。

不同之处在于Windows.Window 版本返回一个可为空的布尔值(bool?Nullable<bool>),而Forms.Form 版本返回一个直接的bool

我还没有看到可为空的 bool 为空,并且在 MSDN 文档中找不到它的情况。

谁能解释为什么Windows.Window.ShowDialog 返回一个可空值?我应该检查一下吗?如果我看到 null 是什么意思?

【问题讨论】:

  • 我认为发生这种情况,因此您可以使用自己的逻辑覆盖 ShowDialog() 函数,并返回一个布尔值是否发生了某事。不过不能确定。

标签: .net wpf windows


【解决方案1】:

请看这里:Window.DialogResult Property

当对话框显示但既不接受也不取消时,DialogResult 为空。

【讨论】:

【解决方案2】:

正如 Kent Boogaart 在his answer 中展示的一个非常相似的问题

当你关闭窗户时,你会 注意对话框有一个 DialogResult 为 false,而 non-dialog 有一个 null DialogResult

所以Windows.Window.ShowDialog 返回一个可空值,因为它使用 DialogResult 属性,当它不是对话框时该属性为空

【讨论】:

    【解决方案3】:

    为什么 Windows.Window.ShowDialog 返回 可以为空?

    我认为这只是一个任意的实现选择。如果我猜的话,我会说返回一个可为空的 bool 比创建另一个枚举来返回结果要轻一些。可以为空的布尔值有三种状态,一种涵盖所有基数。

    【讨论】:

      【解决方案4】:

      ShowDialog 返回窗口的DialogResult,它是一个Nullable。当窗口打开时,DialogResult 为空。一旦 DialogResult 设置为 true 或 false,ShowDialog 将返回该结果。由于窗口上的任何关闭操作都会将 DialogResult 隐式设置为 false,除非它被显式设置,是的,您可以放心地忽略 ShowDialog 返回的 null 值(另一方面,如果您直接检查,DialogResult 可以为 null)。据我所知,这只是完全匹配类型的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 2018-08-23
        • 2017-04-30
        • 1970-01-01
        • 2012-10-24
        • 2014-04-20
        相关资源
        最近更新 更多