Практически идентичное решение уже обсуждалось в заметке "C#, проверить, открыта ли форма" (копия).
Делается все примерно также. Для удобства вынесем проверку, открыта ли форма в отдельную функцию:private bool IsFormOpen(string FormName)
{
foreach (Form f in Application.OpenForms)
{
if (f.Name == FormName)
{
f.Focus();
return true;
}
}
return false;
}
Если форма открыта, устанавливаем ей фокус (f.Focus()) и возвращаем true. Если формы нет - возвращаем false.
В обработчике события, в котором будем вызывать форму, вызываем эту функцию, и если она вернула false, создаем и показываем форму, иначе выходим из обработчика:private void btnChild1_Click(object sender, EventArgs e)
{
if (IsFormOpen("frmChild1")) return;
frmChild1 fChild1 = new frmChild1();
fChild1.Show();
}
private void btnChild2_Click(object sender, EventArgs e)
{
if (IsFormOpen("frmChild2")) return;
frmChild2 fChild2 = new frmChild2();
fChild2.Show();
}
Пример на GitHub
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/11/18/c-pe