Толик Панков
hex_laden
............ .................. ................

November 2020
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Толик Панков [userpic]
C#, проверить, открыта ли форма.

Например, для того, чтобы не дать пользователю повторно открыть одно и то же окно, несколько раз.

Например, такой код при нажатии на кнопку создаст столько форм 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-proverit-otkryta-li-forma/

Tags: ,
Comments

Привет, а ты и есть тот панк, про которого все говорят? Еси да, давай дружить!

Я панк, но кто про меня че говорит, я хз. Но как обычно про панков говорят хуйню. А дружить лучше с [info]blu4sezon, здесь у меня типа серьезный блог про всякое серьезное. А там я дурачусь.

впрочем, добавил.