2014-02-14 80 views
0

有没有什么办法可以检测MessageBox的关闭。一些解决方法是可能的,也许我可以编写自己的自定义MessageBox,但我需要操作系统的MessageBox。是否可以捕获MessageBox关闭?

也许就像MessageBox.Closing += new EventHandler,有什么建议吗?

+0

你能解释一下目的吗? – Steve

+0

我必须在打开时将标志设置为true,并在关闭时将标志设置为false。 –

回答

1

您可以使用MessageBox找到int Extended WPF Toolkit™ Community Edition

在其文档之外,还有所谓的

CloseButtonClicked 
Closed 

两个事件,但在Tigran答案解释的那样,MessageBox.Show调用模式,并阻止您拨打电话线,所以没有必要捕捉关闭事件,除非您正在运行另一个应该以某种方式立即响应关闭消息框的线程。

+0

是的,这正是我正在寻找的,非常感谢你。 –

5

如果不使用一些不太可靠的API调用和嗅探,没有“正常”的方法。但根据你的评论,你需要的可能是这样的:

var flag = true; 
MessageBox.Show(...); 
flag = false; 

这是做到这一点的正确方法。 MessageBox.Show(...);是一个阻塞呼叫。

如果您需要更多的控制,定义你自己的形式,它西港岛线成为消息框。 所以你可以完全控制它,并且还有事件处理器的可能性。