我有一个 MDI 主窗体。我在上面托管了一个表单,我希望它在关闭之前显示一个消息框(询问用户是否保存更改)。
到目前为止一切顺利,但是我发现关闭 MDI 主窗体不会引发 MDI 子 FormClosing 事件。我想我会在 MDI 主的 FormClosing 事件(确实会引发)中调用MdiChild .Close() 。这个接缝可以工作,但它确实会导致问题......
在我显示的消息框中,我让用户保存更改,而不是保存更改并取消关闭。通常这工作正常,但我似乎无法找到取消 MDI 主的 FormClosing 事件的方法。有没有一种优雅的方式来做到这一点?
编辑:我通过抛出异常(当用户决定取消关闭程序时)解决了这个问题,该异常在 MDI 主的 FormClosing 事件中被捕获。通过这种方式,我知道何时必须取消 MDI 主的 FormClosing 事件,并且这个接缝可以正常工作......但是我无法相信这个“hax”是这样做的唯一方法。肯定有更好的方法吗?