如何防止表单对象在关闭时处理?
我使用的是MDIParent表格。 当我关闭它的孩子时,孩子的对象处理。 有没有办法将子可见性设置为false而不是处置?
默认情况下,当您关闭表单时,它将被处置。 您必须覆盖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. }
是。 您可以调用表单的“隐藏”方法。
您也可以覆盖OnClosed而不调用其基本实现; 但是,当你想要处理表格时,这可能会妨碍你。
您可以取消关闭事件并隐藏。
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; this.Hide(); }
当然,你可以取消关闭并隐藏它。 这似乎不是一件好事,但你绝对可以。
请参见Form.FormClosing事件 (MSDN)。
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; }