ShowDialog返回类型:Form vs. Window

时间:2011-02-08 21:20:43

标签: .net wpf windows

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

区别在于Windows.Window版本返回可以为空的bool(bool?Nullable<bool>),而Forms.Form版本返回直线bool。< / p>

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

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

4 个答案:

答案 0 :(得分:2)

见这里:Window.DialogResult Property

  

当显示对话框但未接受或取消时,DialogResult为空。

答案 1 :(得分:1)

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

  

关闭窗户时,你会   注意对话框有一个   DialogResult的错误,而   非对话框有一个空的DialogResult

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

答案 2 :(得分:0)

  

Windows.Window.ShowDialog返回的原因   可空的?

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

答案 3 :(得分:0)

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