如何让System.Windows.ShowDialog()返回'true'?

时间:2009-02-03 00:17:39

标签: .net wpf dialog

如何让System.Windows.ShowDialog()返回'true'?

我对此有点新鲜。 System.Windows.ShowDialog的返回类型是bool?当您点击true时,它应该会返回Submit,而当您点击false时会返回Cancel。但我不知道如何指定哪个Button是官方提交按钮。

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

3 个答案:

答案 0 :(得分:40)

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

  

ShowDialog返回Nullable<(Of   <(T>)>)指定的布尔值   活动是否被接受或   取消。返回值是   DialogResult属性的值   在窗口关闭之前(见   的DialogResult)。

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

答案 1 :(得分:17)

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

this.DialogResult = true;

修改

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

修改2

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

答案 2 :(得分:8)

如果将DialogResult设置为true,则ShowDialog返回true,如果将DialogResult设置为false,如果关闭对话框而不设置DialogResult(用户单击右上角的红色X),ShowDialog将返回false。ShowDialog将返回null。 / p>

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

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