Как предотвратить размещение объекта формы при закрытии? - PullRequest
16 голосов
/ 19 мая 2011

Я использую форму MDIParent.Когда я закрываю своего ребенка, объект ребенка располагает.Есть ли способ установить для видимости ребенка значение false вместо удаления?

Ответы [ 5 ]

35 голосов
/ 19 мая 2011

По умолчанию, когда вы закрываете форму, она будет удалена.Вы должны переопределить событие 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.
}
3 голосов
/ 19 мая 2011

Вы можете отменить событие закрытия и скрыться вместо него.

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        e.Cancel = true;
        this.Hide();
    }
2 голосов
/ 19 мая 2011

Да.Вы можете вызвать метод «Скрыть» формы.

Вы также можете переопределить OnClosed и не вызывать его базовую реализацию;ОДНАКО, если вы действительно хотите избавиться от формы, это может помешать вам.

0 голосов
/ 23 июня 2017
    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;
}
0 голосов
/ 19 мая 2011

Конечно, вы можете отменить закрытие и скрыть его. Это не очень хорошая вещь, но вы определенно можете.

См. Событие Form.FormClosing (MSDN).

...