Например, для того, чтобы не дать пользователю повторно открыть одно и то же окно, несколько раз.
Например, такой код при нажатии на кнопку создаст столько форм frmChild, сколько раз кнопка будет нажата:
private void btnOpenForm_Click(object sender, EventArgs e)
{
frmChild fChild = new frmChild();
fChild.Show();
}
Конечно, можно сделать форму модальной, с помощью fChild.ShowDialog(), тогда мы не будем иметь доступа к первой форме, пока вторая не закроется. Но если это не нужно, например, мы хотим свободно переключаться между двумя формами, но вторую создать только один раз.
Открытые формы содержатся в Application.OpenForms. И фактически, надо просто перебрать этот массив, чтобы посмотреть, открыта или нет форма, например по ее имени:
foreach (Form f in Application.OpenForms)
{
if (f.Name == "frmChild")
{
lblFormOpened.Text = "Form #2 already opened!";
return;
}
}
Код обработчика нажатия кнопки целиком:
private void btnOpenForm_Click(object sender, EventArgs e)
{
lblFormOpened.Text = "";
foreach (Form f in Application.OpenForms)
{
if (f.Name == "frmChild")
{
lblFormOpened.Text = "Form #2 already opened!";
return;
}
}
frmChild fChild = new frmChild();
fChild.Show();
}