Вопрос

У меня есть приложение MDI.Когда я показываю окно сообщения с помощью MessageBox.Показать (), все приложение исчезает за всеми моими открытыми окнами, когда я закрываю окно сообщения.

Код не делает ничего особенного.Фактически, вот строка, которая вызывает окно сообщения из дочерней формы MDI:

MessageBox.Show(String.Format("{0} saved successfully.", Me.BusinessUnitTypeName), "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)

Me.BusinessUnitTypeName() - это средство получения свойства только для чтения, которое возвращает строку в зависимости от значения переменной-члена.Это свойство не имеет побочных эффектов.

Есть какие-нибудь идеи?

Это было полезно?

Решение

Удалите последний параметр, MessageBoxOptions.DefaultDesktopOnly.

От MSDN:

DefaultDesktopOnly приведет к тому, что приложение, вызвавшее MessageBox , потеряет фокус.Отображаемое поле сообщения не будет использовать визуальные стили.Дополнительные сведения см. в разделе Визуализация Элементы управления с визуальными стилями.

Последний параметр позволяет взаимодействовать фоновой службе Windows с активным рабочим столом посредством csrss.exe!Посмотрите Барта де Смета запись в блоге за подробностями.

Другие советы

Удалите MessageBoxOptions.DefaultDesktopOnly параметр, и он будет работать корректно.

DefaultDesktopOnly указывает , что "Окно сообщения отобразится на активном рабочем столе" что приводит к потере фокуса.

Эти ответы верны, но я хотел бы добавить еще один момент.Я столкнулся с этим вопросом, работая с чужим кодом.Простое окно сообщения приводило к перемещению самого переднего окна назад:

Окно сообщений.Показать ("Привет").

Оказывается, там был BindingSource .Завершенная команда перед MessageBox .Источник привязки еще не был подключен ни к каким элементам управления, но это привело к изменению z-позиции окна.

Я включаю эту заметку только потому, что мой поиск привел меня к этому вопросу, и я подумал, что это может быть полезно кому-то еще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top