VB.Net MessageBox.Show () перемещает мою форму назад - PullRequest
3 голосов
/ 01 октября 2008

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

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

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

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

Есть идеи?

Ответы [ 3 ]

5 голосов
/ 01 октября 2008

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

С MSDN :

DefaultDesktopOnly вызовет приложение, которое подняло MessageBox потерять фокус. MessageBox, который отображается не будет использовать визуальные стили. Для получения дополнительной информации см. Рендеринг. Управление с помощью визуальных стилей.

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

2 голосов
/ 01 октября 2008

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

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

1 голос
/ 05 февраля 2019

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

MessageBox.Show ( "Hello").

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

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

...