2011-02-08 66 views
3

在WPF/.Net中,System.Windows.WindowSystem.Windows.Forms.Form都有.ShowDialog方法。ShowDialog返回类型:Form vs. Window

的区别在于,Windows.Window版本返回一个布尔可为空(bool?Nullable<bool>),而版本Forms.Form返回一个直bool

我还没有看到可空的布尔永远为空,并且无法找到它将在MSDN文档中的情况。

任何人都可以解释为什么Windows.Window.ShowDialog返回一个可为空?我应该检查一下吗?如果我看到null,这意味着什么?

+0

我认为会发生这种情况,因此您可以用自己的逻辑重写ShowDialog()函数,并返回布尔值或不发生任何事情。不能确定。 – Machinarius 2011-02-08 21:24:52

回答

2

在这里看到:Window.DialogResult Property

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

+0

我从这里到达“Window.ShowDialog方法”页面:http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog.aspx – 2011-02-08 21:24:48

0

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

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

0

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

1

肯特Boogaart演示了his answer一个非常类似的问题

当您关闭窗口,你会 通知,该对话框中有一个 的DialogResult的假,而 非对话框有一个空的DialogResult

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