Модальная форма с родительской формой в качестве фона - PullRequest
0 голосов
/ 31 марта 2012

Как я могу иметь черную форму в качестве фона, и некоторые модальные формы открываются по одной, владельцем которой является черная форма?Мне нужно, чтобы эти двое сохранили свой порядок вместе (когда они минимизированы и развернуты), поэтому я выбрал модальную форму.

Я сделал простую основную форму с черным фоном и открыл форму в диалоговом (модальном) виде.Основная форма обеспечивает черный фон для меня, а модальная форма остается перед черным фоном.Но при открытии новых форм я не могу установить для владельца новой модальной формы вышеупомянутую черную форму.Я попытался передать черный объект формы, а также зарегистрировать события безрезультатно.

Знаете ли вы какой-либо механизм для реализации следующего сценария:

Черная форма в качестве фона и ряд модальныхформы открываются по одной перед черной, таким образом, что черная форма является владельцем каждой модальной формы.

Спасибо

Редактировать

Пожалуйста, рассмотрите этот сценарий: у меня есть 3 формы с именами frmBlack , Form1 и Form2 .Я использую frmBlack в качестве основной затемненной формы .После размещения кнопки в этой форме я вызываю Form1Object.ShowDialog (this).Теперь предположим, что я хочу перейти к третьей форме (Form2), [это означает, что я должен закрыть Form1Object] Я помещаю кнопку во вторую форму (Form1), и когда эта кнопка нажата, я должен закрыть объект Form1 и перейтидля Form2Object, в то время как его владелец в функции ShowDialog () должен быть установлен в frmBlack.

Ответы [ 3 ]

0 голосов
/ 31 марта 2012

Родитель или Владелец? Это разница Родитель используется только в MDI-приложениях (см. Пост Луиджи). Владелец может быть установлен в вызове на ShowDialog( owningForm ).

Чего ты хочешь достичь?

НТН

Mario

0 голосов
/ 02 апреля 2012

Чтобы добиться того, что вы хотите от окна со вторым пакетом кнопки до frmBlack, и позвольте ему делать свою работу. Или, более конкретно, установите флаг в пределах frmBlack, поскольку в frm1.btnShowNextForm вам необходимо закрыть frm1 ...

А также взгляните на Form.Owner

так что-то вроде этого в frm1.buttonShowNextFormClicked()

{
   if ( null != Owner )
   {
      FrmBlack frmBlackLocal = Owner as FrmBlack;

      if ( null != frmBlackLocal )
      {
         frmBlackLocal.NextAction = FrmBLack.NextActions.ShowForm2; //an enum
      }
   }

   Close();
}

и в черных

{

   frm1.ShowDialog(this);

   if ( NextAction == NextActions.ShowForm2)
   {
      frm2.ShowDialog(this);
   }
}

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

НТН

Mario

0 голосов
/ 31 марта 2012

Это делается с помощью MDI Forms .

Ваше приложение будет выглядеть так: http://www.datadynamics.com/Help/AB3/Images/MDI%20Child%20menu.gif

Это работает в проектах winform, а не в проекте WPF (по крайней мере, по умолчанию).

...