【发布时间】:2015-05-08 04:01:54
【问题描述】:
我有一个 winforms 应用程序,我需要一个好方法来处理以下问题..
基本上,我有主申请表,在其中,我有子表。
用户可以在父表单上点击“关闭”。 但是在子窗体中,可能会发生一些事情。例如,我可能编辑了一些数据绑定字段。
我目前捕捉到了孩子内部的关闭,并正确保存了任何更改。
但是,现在我想要取消关闭的选项。所以子窗体会提示用户,他们实际上可以取消应用程序的关闭。
我在子表单关闭事件中尝试了 e.Cancel ,但这不起作用-我假设因为父表单仍在关闭...有没有办法从子表单中取消父表单的关闭过程...?
【问题讨论】:
-
实际上.. 虽然下面的答案很好,但我确实找到了另一种对我有用的方法 - 以防它帮助任何人......在父表单关闭事件中,我不费心检查特殊的“canclose”项目。我只是调用子表单的 Close() 方法(我在孩子的 Closing 事件中有我的检查和平衡。如果需要,它会取消它自己的关闭)然后下一行我检查子表单的 IsDisposed 属性.如果它没有被处理,那么我取消父级的关闭。
-
parent_FormClosing(...) { childform.Close(); if (!childform.IsDisposed) e.Cancel = true; }