Как проверить из дочерней формы, запущена ли другая форма в родительском 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()