ALT + TAB не работает после отображения MessageBox в модальном диалоге - PullRequest
6 голосов
/ 10 сентября 2009

ALT + TAB не работает после отображения MessageBox в модальном диалоговом окне ...

У меня есть три проекта (P1, P2 и P3) в одном файле решения. P1 содержит P1Form.cs, P2 содержит P2Form.cs.

Подробности этих файлов следующие:

P1Form.cs содержит одну кнопку, которая показывает окно сообщения из метода MessageBox.Show(). P2Form.cs содержит одну кнопку, которая показывает окно сообщения из метода MessageBox.Show().

Проект P3 содержит 3 формы Form_A, Form_B и Form_C. Form_A является контейнером MDI и имеет одну кнопку, которая открывает Form_B в качестве дочерней формы. Form_B также имеет одну кнопку, которая открывает Form_C как модальное диалоговое окно из метода ShowDialog ().

Form_C наследуется от P2Form.cs, а P2Form.cs наследуется от P1Form.cs. Form_A.cs - это основная форма, которая будет первой формой для заявки.

Шаги для воспроизведения нужной проблемы:

  1. Откройте Form_A, которая является MDI Контейнер
  2. Нажмите на кнопку, которая откроет Form_B
  3. Снова нажмите кнопку на форме_B который откроет Form_C, который будет иметь две кнопки (обе кнопки из базовых классов P1Form.cs и P2Form.cs)
  4. Нажмите любую кнопку Form_C, которая откроет окно сообщения.

Проблема: Теперь переключаем окно через Alt + Tab. Вы не сможете увидеть значок текущего окна в окне переключения.

Альтернативные варианты, которые я пробовал ...

  1. Если я использую Form.show() вместо Form.ShowDialog, то он работает нормально.
  2. Если я напишу всю кодировку MessageBox в текущем классе вместо записи в базовом классе, то все будет работать нормально.

Может кто-нибудь подсказать, как можно решить эту проблему, не выполняя обе вышеупомянутые альтернативы, которые я уже пробовал?

1 Ответ

1 голос
/ 11 сентября 2009

Попробуйте установить отношения родитель-потомок от Form_B (parent) до Form_C (child):

Form_C f = new Form_C();
f.ShowDialog(this);
...