Я предполагаю, что у вас есть основная форма, которая создает немодальную дочернюю форму. Так как этот ребенок форма может быть закрыта, независимо от основного, вы можете иметь два сценария:
- форма Ребенок еще не была создана еще, или она была закрыта. В этом случае создайте форму и покажите ее.
- детская форма уже работает. В этом случае вам нужно только показать его (оно может быть сведено к минимуму, и вы захотите его восстановить).
В принципе, ваша главная форма должна отслеживать жизни дочернего формы в, путем обработки его 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;
}
}
мое намерение состоит в закрыть форму и снова открыть ее. так как я могу открыть закрытую форму? – Sephiroth111
, если вы хотите повторно открыть форму, которая была закрыта, вам необходимо повторно создать ее так же, как вы создали, сначала: 'YourFormType Mainmenu = new YourFormType(); Mainmenu.Show() ' –