【问题标题】:Forms closing without pop ups(blocking popup and forcefully closing other forms) on main form exit在主表单退出时关闭没有弹出窗口的表单(阻止弹出窗口并强制关闭其他表单)
【发布时间】:2012-01-31 20:40:40
【问题描述】:

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

我正在开发 winform 应用程序,我有一个主 form1,它创建 form2。 Form2 有关闭按钮和重写的 FormClosing() 方法来提示确认弹出,效果很好。

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

感谢您的回复, 问候 公里

【问题讨论】:

  • 如何创建form2?你如何关闭form1?

标签: winforms


【解决方案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;
            }
        }
    }

考虑始终保存更改,这样用户就不会遭受意外的数据丢失。对您在程序启动备份时重新打开的临时文件说。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-26
    • 2016-09-02
    • 2012-12-21
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多