46

我如何才能System.Windows.ShowDialog()返回“真”?

我对此有点陌生。 System.Windows.ShowDialog的返回类型是bool? 它应该true在您击中时返回Submit,并且false在您击中时返回Cancel。但我不确定如何指定哪个Button是官方提交按钮。

编辑:在相关说明中,我很好奇它如何返回 null。

4

3 回答 3

48

http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog.aspx

ShowDialog 返回一个Nullable<Boolean>值,该值指定活动是被接受还是被取消。返回值是窗口关闭之前 DialogResult 属性的值(请参阅 DialogResult)。

基本上,您通过设置 DialogResult 的值来决定,而不是通过点击特定按钮来决定 - 您决定按钮的作用。

于 2009-02-03T00:21:37.260 回答
22

在 WPF 中,将Button.IsDefault属性设置为 true 以指定按钮是窗口的“提交”按钮。我不是 100% 确定这会使窗口关闭,DialogResult 为 true。如果没有,您只需要这样处理它的 Click 事件:

this.DialogResult = true;

编辑

同样,您可以使用Button.IsCancel属性使按钮成为表单的“取消”按钮。

编辑 2

我相信 ShowDialog 可以为空的原因是因为在提交或取消表单之前它是空的,如果你在后台线程中观看对话框,你可以测试它。我没有尝试过,但这似乎是他们将第三个“未知”(null)状态引入该属性的合乎逻辑的原因。

于 2009-02-03T00:23:01.953 回答
8

如果将 DialogResult 设置为 true ShowDialog 返回 true,如果将 DialogResult 设置为 false ShowDialog 返回 false 如果在未设置 DialogResult 的情况下关闭对话框(用户单击右上角的红色 X) ShowDialog 将返回 null。

将 IsDefault 设置为 true 将导致按钮看起来有点不同,按 enter 将“单击”此按钮。

如果将 IsCancel 设置为 true,则按下 esc 将“单击”此按钮。

于 2009-02-03T13:12:07.517 回答