Как предотвратить закрытие объекта формы при закрытии?
Я использую MDIParent Form. Когда я закрываю его дочерний объект, объект ребенка находится. Есть ли способ установить видимость для ребенка вместо false?
Ответы
Ответ 1
По умолчанию, когда вы закрываете форму, она будет удалена. Вы должны переопределить событие 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 и не вызывать его базовую реализацию; ОДНАКО, когда вы хотите избавиться от формы, это может помешать вам.
Ответ 3
Вы можете отменить событие закрытия и скрыть его.
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
}
Ответ 4
Конечно, вы можете отменить закрытие и скрыть его. Не похоже, что это хорошо, но вы определенно можете.
См. Событие Form.FormClosing (MSDN).
Ответ 5
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;
}