В вашем winform2.Activated
обработчике событий, вызовите это:
static void FocusModalForm()
{
foreach (Form form in Application.OpenForms)
if (form.Modal)
{
form.WindowState = FormWindowState.Normal;
form.BringToFront();
}
}
например
Form f2 = new Form();
f2.Activated += (_, __) => FocusModalForm();
f2.Show();
Возможно, вам придется сделать то же самое для winform1
Activated
событие.Это зависит от того, как создается winform2
.Просто попробуйте, и если вы обнаружите, что winform1
(или любая другая немодальная форма) все еще может оказаться перед модальной формой, просто позвоните FocusModalForm()
из ее события Activated
.
Я пыталсяэто в Windows 7. Я попытался скрыть все окна (нажмите кнопку Показать рабочий стол на панели задач), а затем выбрал form2 непосредственно на панели задач, и я также попытался просто выбрать form2 на панели задач, не скрывая все окна.Form3 всегда оставался на вершине.