我正在使用 MDIParent 表格。当我关闭它的孩子时,孩子的对象就会被处置。有没有办法将子可见性设置为 false 而不是处置?
问问题
29234 次
5 回答
43
默认情况下,当您关闭表单时,它将被释放。您必须覆盖该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.
}
于 2011-05-19T14:51:46.617 回答
4
您可以取消关闭事件并改为隐藏。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
}
于 2011-05-19T15:00:45.447 回答
2
是的。您可以调用表单的“隐藏”方法。
您还可以覆盖 OnClosed 而不调用它的基本实现;但是,当您确实想要处理表单时,这可能会妨碍您。
于 2011-05-19T14:49:54.187 回答
0
当然,您可以取消关闭并隐藏它。这似乎不是一件好事,但你绝对可以。
请参阅Form.FormClosing 事件(MSDN)。
于 2011-05-19T14:50:34.187 回答
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;
}
于 2017-06-23T08:13:08.737 回答