отключить все окна, связанные с текущим приложением - PullRequest
2 голосов
/ 15 ноября 2011

У меня есть основное приложение, которое может вызывать методы .net.Мой метод .net запускает новый поток, который показывает модальную форму.

Теперь мой метод .net должен отключить все окна из основного приложения, пока отображается модальная форма.

Как я могу это сделать?

Я думал оwin32 метод "GetWindow" ,, но тогда мне понадобится дескриптор формы основного приложения.

В моем примере вы видите основное приложение, которое вызывает метод с помощью модального диалога.Когда я нажимаю на главное приложение, когда threadingform-dlg открыт, threadingform-dlg должен мигать.

main app with modal dialog

Ответы [ 4 ]

4 голосов
/ 15 ноября 2011

Используйте функцию ShowDialog() формы вместо Show().Это автоматически сделает форму модальной.

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

3 голосов
/ 15 ноября 2011

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

1 голос
/ 15 ноября 2011
foreach (Form openedForm in Application.OpenForms) {
    if (openedForm.GetType() == FormToClose) {
        openedForm.Hide();
    }
}
1 голос
/ 15 ноября 2011

Вы можете получить все открытые окна приложения, открыв свойство OpenForms .

var forms = Application.OpenForms;
...