仅在WPF中的ShowDialog()之后设置DialogResult

仅在WPF中的ShowDialog()之后设置DialogResult,wpf,dialog,Wpf,Dialog,我有一个窗口,有时使用Show()打开,有时使用ShowDialog()打开。在第二种情况下,返回的对话框结果对我来说很重要。但是如果我在调用Show()后设置了对话框result,我会得到一个invalidoOperationException。有没有办法找到打开窗口并相应设置对话框结果的方法?还是有别的办法 当然,我知道我可以捕获并忽略异常,但我不喜欢这种解决方案。在表单关闭事件中设置this.DialogResult=DialogResult.blah怎么样?在窗口内使用以确定它是否在模式

我有一个窗口,有时使用
Show()
打开,有时使用
ShowDialog()
打开。在第二种情况下,返回的对话框结果对我来说很重要。但是如果我在调用
Show()
后设置了
对话框result
,我会得到一个
invalidoOperationException
。有没有办法找到打开窗口并相应设置
对话框结果的方法?还是有别的办法


当然,我知道我可以捕获并忽略异常,但我不喜欢这种解决方案。

在表单关闭事件中设置this.DialogResult=DialogResult.blah怎么样?

在窗口内使用以确定它是否在模式线程上运行。

如果查看Reflector中的set_DialogResult,它检查显示对话框以确定对话框是否为模态。不幸的是,这是一个私人领域


在调用Show()/ShowDialog()之前,是否始终构造窗口的新实例。如果是这样,您可以向构造函数传递一个参数,指示如何显示它

您可以使用
Form.Modal
属性检查使用类型

在使用
Form.Show()
的情况下,您必须使用另一种方式让调用者知道表单的任何结果


是否有理由同时使用两种方式显示表单?

这会有什么帮助?即使在Show()之后仍然会设置它并导致异常。顺便说一句,我使用了WPF(我没有明确指定),所以对话框结果是bool?。在我这样做之前。Close();在模式窗口中,我设置为:DialogResult=DialogResult.OK;在主要形式上,这正是我得到的。谢谢你,sgrassie:)这个属性在WPFDoesn中不存在,并不总是有效的,在我们的例子中,我们必须包装DialogResult=x;打电话询问是否有适当的行为。