WinForms — определяет, открыты ли какие-либо диалоговые окна

#.net #winforms #dialog #window

#.net #winforms #диалоговое #окно

Вопрос:

У меня есть таймер в основной форме приложения.

Таймер отображает экран nag каждые N секунд.

Но я бы хотел избежать отображения экрана nag, если открыты какие-либо модальные диалоговые окна. В противном случае произойдет перекрытие.

Я могу использовать Application.OpenForms , но это не учитывает такие диалоги, как OpenFileDialog .

Как определить, отображаются ли какие-либо дочерние диалоговые окна в данный момент?

Комментарии:

1. Не существует простого способа сделать это на 100% надежно. Лучшим подходом является простое увеличение общедоступной статической переменной перед вызовом ShowDialog() и последующее ее уменьшение.

2. @HansPassant: Вы упоминаете отсутствие простого способа надежного достижения этого. Не могли бы вы намекнуть на то, как можно было бы приблизиться к этому, не отслеживая статические переменные по всей сложной форме?

Ответ №1: