表单关闭而没有弹出窗口(阻止弹出窗口并强制关闭其他窗体)在主窗体出口上

时间:2012-01-31 10:59:49

标签: winforms

如果这个问题具有重复性,请接受我的道歉。我搜索了现有的问题和解决方案,但我找不到解决问题的方法。

我正在开发winform应用程序,我有一个主form1,它创建了form2。 Form2有关闭按钮和重叠的FormClosing()方法来提示确认弹出窗口,它完美地工作。

当我想关闭form1(这是主应用程序线程)并且我想关闭所有其他表单时,请说form2创建的form2,form3,而不实际提示form2,form3的确认弹出窗口。基本上,当关闭form1时,它应该强制关闭从form1显示的所有其他表单,现在它在退出应用程序之前显示form2,form3的所有确认弹出窗口。

我感谢你的回复, 问候 SKM

1 个答案:

答案 0 :(得分:1)

您需要注意在FormClosing事件中传递给您的e.CloseReason属性值。仅在e.CloseReason == CloseReason.UserClosing时提示用户。这还可确保在用户关闭Windows时不显示对话框。例如:

    private void Form2_FormClosing(object sender, FormClosingEventArgs e) {
        if (e.CloseReason == CloseReason.UserClosing && !saved) {
            switch (MessageBox.Show(this, "Save changes?", "Closing",
                    MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)) {
                case DialogResult.Yes: Save(); break;
                case DialogResult.No: break;
                case DialogResult.Cancel: e.Cancel = true;
            }
        }
    }

考虑始终保存更改,以免用户意外丢失数据。对程序启动时重新打开的临时文件说。