Я предполагаю, что у вас есть основная форма, которая создает немодальную дочернюю форму. Поскольку эта дочерняя форма может быть закрыта независимо от основной, у вас может быть два сценария:
- Дочерняя форма еще не создана или закрыта. В этом случае создайте форму и покажите ее.
- Дочерняя форма уже запущена. В этом случае вам нужно только показать ее (она может быть свернута, и вы захотите восстановить ее).
По сути, ваша основная форма должна отслеживать время жизни дочерней формы, обрабатывая событие FormClosed
:
class MainForm : Form
{
private ChildForm _childForm;
private void CreateOrShow()
{
// if the form is not closed, show it
if (_childForm == null)
{
_childForm = new ChildForm();
// attach the handler
_childForm.FormClosed += ChildFormClosed;
}
// show it
_childForm.Show();
}
// when the form closes, detach the handler and clear the field
void ChildFormClosed(object sender, FormClosedEventArgs args)
{
// detach the handler
_childForm.FormClosed -= ChildFormClosed;
// let GC collect it (and this way we can tell if it's closed)
_childForm = null;
}
}