有没有办法检测MessageBox关闭。一些解决方法是可能的,也许我可以编写自己的自定义MessageBox,但我想要操作系统的MessageBox。
也许类似于MessageBox.Closing += new EventHandler
,有什么建议吗?
答案 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事件。应该以某种方式立即对消息框的关闭做出反应。