如何防止表单对象在关闭时处理?

我使用的是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; }