Получить текущий MessageBox - PullRequest
       0

Получить текущий MessageBox

2 голосов
/ 17 ноября 2011

У меня большое приложение с несколькими формами, любая из которых может получить MessageBox (MessageBox.Show()), который является модальным и блокирует форму.

При активации другой формы мне теперь нужно найти это MessageBox и перенести форму с этим MessageBox на передний план. Есть ли способ проверить это?

Я знаю о свойстве Application.OpenForms, может быть, есть что-то подобное для MessageBox?

Edit1: Например, скажем, что мы открываем Winform1, тогда событие в Winform1 будет идти к mainController, который открывает Winform2. Позже Winform1 получает MessageBox.Show, но вполне возможно вывести Winform2 на передний план (выше Winform1). Поэтому теперь мне нужно отреагировать на Winform.Activation, чтобы проверить, существует ли какой-либо MessageBox.Show, и если да, перенести эту форму, которая содержит MessageBox, на передний план.

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Вы можете найти их, сделав что-то вроде этого:

foreach (Form f in Application.OpenForms)
{
    if (f.Visible && ! f.CanFocus)
    {
        // whatever...
    }
}

Извиняюсь, если синтаксис неправильный, я делаю Boo, а не C # ...

Редактировать: Как насчет другого подхода в целом?

Сделайте так, чтобы все ваши формы обрабатывали Application.EnterThreadModal и Application.LeaveThreadModal, чтобы, когда приложение переходит в модальное состояние, когда эта форма актуальна, вы добавляете эту форму в список, чтобы отслеживать ее, и удаляете из списка. когда он выходит из модального режима ... Тогда все, что вам нужно сделать, это запросить этот список, чтобы увидеть, есть ли в модальных диалоговых окнах.

0 голосов
/ 17 ноября 2011

Попробуйте использовать один из методов Show, который переходит к владельцу:

MessageBox.Show(this, "My Message");

Я проверял это в .NET 4 / Windows 7 и при открытии окна сообщенияон выводит своего владельца на фронт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...