ShowDialog()什么时候返回null?

Joe*_*ite 32 wpf null showdialog

WPF的Window.ShowDialog方法返回一个可以为空的布尔值.那样做CommonDialog.ShowDialog.

现在,我理解这些将返回false的情况(用户单击取消或按下Esc),以及何时返回true(代码集Window.DialogResult为true,可能是为了响应OK单击).但是null?

我的第一个想法是单击标题栏的"关闭"按钮可能会返回null.但文档说明(我通过测试确认)标题栏关闭按钮被视为取消.

那么什么时候会Window.ShowDialog或者CommonDialog.ShowDialog永远返回null?

Unc*_*leO 25

该方法始终返回true或false,并且它始终等于窗口关闭时的DialogResult属性.

但是在关闭窗口之前,DialogResult属性为null,而另一个线程可以检查该属性.因此,有意义的是,返回值是一个可以为空的布尔值来匹配属性,即使它实际上从不为null.

  • 不是另一个线程,但是在对话框上的事件处理程序上运行(例如)的任何代码都可以在完成之前检索DialogResult的值.我个人认为这是一个糟糕的设计选择.它应该是不可为空的,如果在对话框退出之前访问,则getter抛出异常. (6认同)