Как проверить из дочерней формы, запущена ли другая форма в родительском MDI?

У меня есть форма MDI. Я хочу проверить в работающем дочернем элементе этой формы, запущена ли другая форма. Что-то вроде:

    if (this.MdiParent.MdiChildren.Contains(MyForm2))
    {
        //Do Stuff
    }

куда MyForm2 Имя (имя класса) для формы, которую я ищу. Компилятор говорит что-то вроде "Имя класса недопустимо на данный момент".

Как это сделать правильно? Обратите внимание, что у меня может быть несколько экземпляров "MyForm2", запущенных в этот момент (ну, с разными именами экземпляров!)

2 ответа

Решение

Просто создайте цикл для циклического перемещения по коллекции MdiChildren, чтобы увидеть, существует ли какая-либо форма указанного типа. Contains требует определенного экземпляра для возврата действительных данных:

        foreach (var form in this.MdiParent.MdiChildren)
        {
            if (form is MyForm2)
            {
                // Do something. 

                // If you only want to see if one instance of the form is running,
                // add a break after doing something.

                // If you want to do something with each instance of the form, 
                // just keep doing something in this loop.
            }
        }

Вам необходимо проверить тип каждого ребенка.

Например, вы можете использовать is ключевое слово ( дополнительная информация), чтобы определить, является ли дочерний тип правильным:

if (this.MdiParent.MdiChildren.Any(child => child is MyForm2))
{
}

.Any() метод требует ссылки на System.Linq, Узнайте больше о Any()

Другие вопросы по тегам