.net 如何让System.Windows.ShowDialog()返回';真的';?

.net 如何让System.Windows.ShowDialog()返回';真的';?,.net,wpf,dialog,.net,Wpf,Dialog,如何使System.Windows.ShowDialog()返回“true” 我对这个有点陌生System.Windows.ShowDialog的返回类型是bool?当您点击Submit时,它应该返回true,当您点击Cancel时,它应该返回false。但是我不知道如何指定哪个按钮是正式的提交按钮 编辑: 另一方面,我很好奇它如何返回null。 ShowDialog返回一个指定 该活动是否被接受 取消。返回值是 DialogResult属性的值 在窗口关闭之前(请参见 对话框结果) 基本上,您

如何使
System.Windows.ShowDialog()
返回“true”

我对这个有点陌生
System.Windows.ShowDialog
的返回类型是
bool
?当您点击
Submit
时,它应该返回
true
,当您点击
Cancel
时,它应该返回
false
。但是我不知道如何指定哪个
按钮是正式的提交按钮

编辑: 另一方面,我很好奇它如何返回null。

ShowDialog返回一个指定 该活动是否被接受 取消。返回值是 DialogResult属性的值 在窗口关闭之前(请参见 对话框结果)

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

在WPF中,将属性设置为true以指定按钮是窗口的“提交”按钮。我不能100%确定这是否会使窗口关闭,对话框结果为true。如果没有,则只需处理其单击事件:

this.DialogResult = true;
编辑

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

编辑2


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

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

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


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

否,将IsDefault设置为true不会导致按钮单击关闭对话框,但是,IsCancel将关闭对话框。将DialogResult设置为true将关闭对话框。如果用户按Enter键,则默认设置为true会触发命令。单击X时,ShowDialog将返回false,而不是null。我相信它只会返回returns null,如果出现错误(如果有)。如果这是多余的或太明显的,我很抱歉,但是在调用对话框内的Close()方法之前,您应该设置bool?DialogResult值。否则将引发InvalidOperationException,Exception.Message属性设置为“DialogResult只能在窗口被创建并显示为dialog之后才能设置。”如果我弄错了,请原谅,因为我已经多年没有使用WinForms了,但是我认为,是的,您应该设置DialogResult(例如,在按钮的OnClick处理程序中,但它可能是您想象的任何机制),然后调用Close()。