Есть ли способ начать диалог с модой, но вместо этого скрывать его, чтобы он отображался при изменении его в немодальном диалоге?Как я могу сделать «частично» модальный диалог?
Я хочу показать диалог, блокирующий метод, показывающий диалог. Затем, когда пользователь нажимает кнопку «Готово» в диалоговом окне, я хочу:
- Диалог остается видимым.
- Управление, чтобы вернуться к методу, который показал диалог.
Я достиг этого результата, запустив диалоговое окно на отдельном потоке STA и используя событие для блокировки основного потока пользовательского интерфейса до тех пор, пока не будет нажата кнопка «Готово», но есть способ уловить этот метод: вы можете щелкнуть на кнопке закрытия главного окна, когда диалог виден, а главное окно закрывается, когда диалог скрыт.
Обновление
Спасибо за ответы. Извините - похоже, я неправильно понял баланс между слишком большим количеством фона и недостаточно.
Форма является модальным диалоговым окном «волшебник» - она появляется, находится перед основным приложением, а затем скрыта. Что касается пользователя, то не существует нестандартной странности. Единственное различие заключается в том, что диалог вызывается из серии обратных вызовов из потока пользовательского интерфейса, поэтому я не думаю, что сделать его действительно модальным (посредством вызова ShowDialog) для его жизни. Первый обратный вызов должен отображать диалог, а затем блокировать, пока пользователь устанавливает свои настройки через диалоговый интерфейс. После этого диалог остается видимым и отображает страницу индикатора выполнения, в то время как различные другие обратные вызовы выполняются из потока пользовательского интерфейса. В конце концов форма скрыта. Пользователь не взаимодействует с основным окном, пока форма заполнена. Что касается них, он должен выглядеть 100% модальным по отношению к основному потоку пользовательского интерфейса.
(Форма представляет собой диалог для мастера Visual Studio - они приводятся из серии обратных вызовов в потоке пользовательского интерфейса). Альтернативой было бы показать диалог, скрыть его, сразу же отобразить самую верхнюю форму «прогресса», а затем скрыть это, но я думаю, что показывать один диалог - это более простой опыт для пользователя.
Снова - извините за беспорядок!
Вам нужно быть осторожным с Opacity, он может провалиться через удаленные рабочие столы и некоторые (хотя и дерьмо) видеокарты – johnc