VB.Net MessageBox.Show() перемещает мою форму в конец
-
03-07-2019 - |
Вопрос
У меня есть приложение 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-позиции окна.
Я включаю эту заметку только потому, что мой поиск привел меня к этому вопросу, и я подумал, что это может быть полезно кому-то еще.