我正在使用MDIParent表单。当我关闭孩子时,孩子的对象会被处理。有没有办法将孩子的可见度设置为错误而不是处置?如何防止表单对象关闭处置?
15
A
回答
31
默认情况下,当您关闭表单时,它将被丢弃。你必须重写Closing
事件,以防止它,例如:
// Use this event handler for the FormClosing event.
private void MyForm_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
e.Cancel = true; // this cancels the close event.
}
2
是的。您可以调用窗体的“隐藏”方法。
您也可以重写OnClosed并且不调用它的基本实现;但是,当你想要处理表格时,这可能会妨碍你。
+2
我不这么认为。当您重写Closed事件时,已经太迟了:) – Vimvq1987 2011-05-19 14:52:26
0
当然,您可以取消关闭并隐藏它。这似乎不是一件好事,但你绝对可以。
请参阅(MSDN)。
2
可以取消close事件和隐藏来代替。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
}
+1
与接受的答案相比,这是调用的相反顺序。订单是否重要? – 2015-01-26 16:02:47
0
void SaveInfo()
{
blnCanCloseForm = false;
Vosol[] vs = getAdd2DBVosol();
if (DGError.RowCount > 0)
return;
Thread myThread = new Thread(() =>
{
this.Invoke((MethodInvoker)delegate {
picLoad.Visible = true;
lblProcces.Text = "Saving ...";
});
int intError = setAdd2DBVsosol(vs);
Action action = (() =>
{
if (intError > 0)
{
objVosolError = objVosolError.Where(c => c != null).ToArray();
DGError.DataSource = objVosolError;// dtErrorDup.DefaultView;
DGError.Refresh();
DGError.Show();
lblMSG.Text = "Check Errors...";
}
else
{
MessageBox.Show("Saved All Records...");
blnCanCloseForm = true;
this.DialogResult = DialogResult.OK;
this.Close();
}
});
this.Invoke((MethodInvoker)delegate {
picLoad.Visible = false;
lblProcces.Text = "";
});
this.BeginInvoke(action);
});
myThread.Start();
}
void frmExcellImportInfo_FormClosing(object s, FormClosingEventArgs e)
{
if (!blnCanCloseForm)
e.Cancel = true;
}
相关问题
- 1. 如何防止AlertDialog关闭?
- 2. 防止关闭表格
- 3. 防止excel在关闭用户表单时关闭
- 4. tkinter菜单checkbutton - 防止菜单关闭
- 5. CDockablePane防止关闭
- 6. 防止从关闭
- 7. 防止PrettyPhoto关闭
- 8. 如何停止Backgroundworker并关闭表单?
- 9. 如何防止关闭JOptionPane.showConfirmDialog框
- 10. 如何防止Nuance的DragonMobile关闭VoiceOver?
- 11. 如何防止窗户关闭?
- 12. 如何防止在FormClosing事件中关闭和处理winform?
- 13. 如何防止ANT关闭批处理文件?
- 14. 防止形式从关闭列表项
- 15. 访问VBA - 防止关闭表格
- 16. 如何防止父窗口关闭之前关闭子窗口
- 17. 防止在按钮的单击事件处理程序中关闭对话框
- 18. 防止工作簿关闭
- 19. 防止连接关闭JSoup
- 20. 椒防止Tomcat关闭
- 21. 防止colorbox实例关闭
- 22. 防止VB.Net窗体关闭
- 23. 防止关闭工作簿
- 24. 防止FIFO关闭FIFO
- 25. jquery防止窗口关闭
- 26. 如何关闭oledbconnection对象?
- 27. 如何防止每次选择checkbutton时关闭菜单
- 28. 如何防止关闭角度材料2中的菜单?
- 29. 关闭对话框时,如何防止jQuery验证从验证
- 30. 如何防止在点击外部时关闭GWT对话框
覆盖处理这一close事件。当然,如果这样做,那么你有东西的记忆,只是无法看到。 – 2011-05-19 14:48:52
[在关闭C#上隐藏MDI子窗体]的可能重复项目(http://stackoverflow.com/questions/6020210/hiding-mdi-child-forms-on-close-c) – 2011-05-19 14:51:51
这里的所有答案都缺少魔术酱。如果你只处理'FormClosing'事件而没有特殊情况,你将永远无法关闭应用程序。哎呦!这可能不是你或用户的意图。然而,我在上述链接重复问题的答案中的代码是正确的,并且在这两种情况下都没有问题。 – 2011-05-19 14:53:50