Почему родительский MDI иногда не сводится к минимуму?

#vb.net #mdi #showdialog

#vb.net #mdi #showdialog

Вопрос:

У меня есть родительский MDI, который открывает другую форму, подобную этой:

 Dim frm As New Form1
frm.ShowDialog(Me)
  

В этой форме есть кнопка, при нажатии на которую выполняется следующее:

 CreateObject("Shell.Application").ToggleDesktop()
  

Кнопка работает как положено (показывает рабочий стол) большую часть времени, но иногда родительский MDI не сворачивается. Все остальные окна, включая форму выше, сворачиваются каждый раз.

Почему это происходит и как мне это исправить?

Комментарии:

1. Вероятно, это как-то связано с порядком сворачивания окон на рабочем столе. Что, вероятно, является случайным. Избегайте использования диалогового окна.

Ответ №1:

Вместо того, чтобы пытаться разрешить форму, показанную с ShowDialog , я изменил угол, с которого я приближаюсь. Я покажу форму с помощью Show и назначу MdiParent , а вместо этого просто подделаю модальность формы. Поддельный модальный режим отключит все другие части родительского MDI, за исключением системных кнопок в строке заголовка. Если пользователь попытается закрыть родительский MDI, «модальное» окно издаст один звуковой сигнал и немного мигнет в строке заголовка.