Например, для того, чтобы не дать пользователю повторно открыть одно и то же окно, несколько раз.
Например, такой код при нажатии на кнопку создаст столько форм 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
Page Summary
![]()
October 2025
|
C#, проверить, открыта ли форма.
Я панк, но кто про меня че говорит, я хз. Но как обычно про панков говорят хуйню. А дружить лучше с |