Например, для того, чтобы не дать пользователю повторно открыть одно и то же окно, несколько раз.
Например, такой код при нажатии на кнопку создаст столько форм 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();
}
Источник
Код примера на GitHub
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/10/23/c-pr