Модальное диалоговое окно с дополнительной формой, отображаемой на панели задач - PullRequest
3 голосов
/ 21 июля 2009

У меня есть две формы для моего приложения, которые отображаются на панели задач Windows. Когда модальное диалоговое окно появляется на главной форме, вторичная форма блокируется. Однако когда пользователь нажимает на вторичную форму на панели задач, она появляется над модальным диалоговым окном и в основном замораживается.

Есть ли способ обеспечить, чтобы модальное диалоговое окно не рисовалось под вторичной формой? Самое верхнее свойство не годится, так как оно привлекает все, даже то, что не связано с приложением.

1 Ответ

4 голосов
/ 22 июля 2009

Возможно, ваша проблема в том, что вы не указали владельца для диалогового окна:

Собственные окна обычно не нуждаются в собственном представлении на панели задач Windows, поскольку они подчинены своим владельцам. Поскольку активация принадлежащего окна неявным образом активирует владельца и наоборот, он просто загромождает панель задач, чтобы иметь записи для обоих. Таким образом, для принадлежащих форм обычно их свойства ShowInTaskBar имеют значение false.

Следующие фрагменты кода (в VB и C #) показывают новую форму, которая создается, принадлежит и отображается:

// defining an owner form in C#

MyForm ownedForm = new MyForm();

ownedForm.ShowInTaskbar = false;

AddOwnedForm(ownedForm);

ownedForm.Show();

В вашем случае может показаться, что вам нужно установить окно владельца для диалога. Это помешало бы окну, представляющему диалоговое окно, отображать поверх it.

РЕДАКТИРОВАТЬ Должен был привести мой источник: .NET Windows Forms в двух словах . Также я опустил код VB.NET. Я правильно порол себе, но не хочу пробежаться по файлу PDF, чтобы отследить его.

...