Вы можете найти их, сделав что-то вроде этого:
foreach (Form f in Application.OpenForms)
{
if (f.Visible && ! f.CanFocus)
{
// whatever...
}
}
Извиняюсь, если синтаксис неправильный, я делаю Boo, а не C # ...
Редактировать: Как насчет другого подхода в целом?
Сделайте так, чтобы все ваши формы обрабатывали Application.EnterThreadModal и Application.LeaveThreadModal, чтобы, когда приложение переходит в модальное состояние, когда эта форма актуальна, вы добавляете эту форму в список, чтобы отслеживать ее, и удаляете из списка. когда он выходит из модального режима ... Тогда все, что вам нужно сделать, это запросить этот список, чтобы увидеть, есть ли в модальных диалоговых окнах.