是否可以捕获MessageBox关闭?

时间:2014-02-14 09:14:30

标签: c# .net wpf messagebox

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

也许类似于MessageBox.Closing += new EventHandler,有什么建议吗?

2 个答案:

答案 0 :(得分:5)

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

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

这是一种正确的方法。 MessageBox.Show(...);是阻止通话。

如果您需要更多控制权,请定义自己的表单,它将成为您的消息框。 因此,您可以完全控制它,并且还可以Closing事件处理程序。

答案 1 :(得分:1)

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

在其文档中有两个名为

的事件
CloseButtonClicked 
Closed

但正如Tigran回答中所解释的那样,MessageBox.Show调用是模态的并且阻塞了调用的线程,所以除非你正在运行另一个线程,否则不需要捕获close事件。应该以某种方式立即对消息框的关闭做出反应。