如果这个问题具有重复性,请接受我的道歉。我搜索了现有的问题和解决方案,但我找不到解决问题的方法。
我正在开发winform应用程序,我有一个主form1,它创建了form2。 Form2有关闭按钮和重叠的FormClosing()方法来提示确认弹出窗口,它完美地工作。
当我想关闭form1(这是主应用程序线程)并且我想关闭所有其他表单时,请说form2创建的form2,form3,而不实际提示form2,form3的确认弹出窗口。基本上,当关闭form1时,它应该强制关闭从form1显示的所有其他表单,现在它在退出应用程序之前显示form2,form3的所有确认弹出窗口。
我感谢你的回复, 问候 SKM
答案 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;
}
}
}
考虑始终保存更改,以免用户意外丢失数据。对程序启动时重新打开的临时文件说。