Обычное поведение WinForms с модальными диалогами кажется проблематичным в приложениях с несколькими окнами верхнего уровня. Мне любопытно, разработал ли кто-нибудь более эффективный подход. Позволь мне объяснить…
Ситуация:
Когда вы выполняете dialog.ShowDialog (parent), любая попытка пользователя щелкнуть или активировать это родительское окно приводит к активации модального диалогового окна и его миганию, так что в нем четко говорится: «Сначала вы должны разобраться с этим». Большой.
Если вместо этого пользователь щелкает одно из других окон верхнего уровня в вашем приложении, оно ничего не делает ... не мигает модальное диалоговое окно ... не выдает предупреждения ... оно даже не выводит вперед модальный диалог ... максимум, что вы можете получить, это звуковой сигнал, если ваш компьютер не отключен. Единственное, что он делает правильно, это то, что он НЕ активирует и НЕ открывает то окно, на которое вы нажимаете… что, по крайней мере, дает пользователю подсказку.
Если вместо этого пользователь использует панель задач, чтобы выбрать одно из других окон верхнего уровня, теперь оно БУДЕТ перемещать его на передний план! Он по-прежнему не активируется, но теперь он, вероятно, полностью закрывает модальное диалоговое окно. Любая попытка взаимодействия с этим окном верхнего уровня терпит неудачу. Вроде заперли. Итак, многие пользователи решили, что наше приложение заблокировано ... они в конечном итоге убивают наше приложение в диспетчере задач и перезапускают! И сообщает нам об этом как об ошибке. Когда на самом деле они только что открыли модальный диалог и должны были вернуться к нему.
Вопросы:
Есть ли способ щелкнуть или активировать любое окно в нашем приложении, чтобы модальное диалоговое окно отображалось на переднем плане и мигало (как теперь будет его родительское окно)?
Могу ли я каким-то образом связать группу окон?
Мы думали, что все модальные диалоги должны быть наверху ... но некоторые из наших модальных диалогов открывают другие окна ... некоторые из них не должны быть наверху, поэтому управление наверху усложняется. К тому же это недружелюбно по отношению к другим приложениям.
Как в приложении с несколькими формами верхнего уровня не дать пользователю подумать, что оно заблокировано из-за скрытого модального диалога?