以父表单为背景的模态表单

问题描述 投票:0回答:3

我怎样才能有一个黑色表单作为背景,并且一次打开一个其所有者是黑色表单的一些模态表单?我需要这两个将它们的顺序保留在一起(最小化和最大化时),这就是我选择模态形式的原因。

我制作了一个带有黑色背景的简单主窗体,并以对话框(模态)形式打开了一个窗体。主窗体为我提供了黑色背景,模态窗体保留在黑色背景前面。但是当打开新表单时,我无法将新模态表单的所有者设置为上述黑色表单。我尝试传递黑色表单对象并注册事件但无济于事。

你知道有什么机制可以实现以下场景吗:

一个黑色表单作为背景,一系列模态表单在黑色表单前面一次打开一个,这样黑色表单就是每个模态表单的所有者。

谢谢

编辑

请考虑这种情况:我有 3 个名为 frmBlackForm1Form2 的表单。我使用 frmBlack 作为主要黑色形式。在此表单上放置按钮后,我调用 Form1Object.ShowDialog(this)。现在假设我要导航到第三个窗体 (Form2),[这意味着我必须关闭 Form1Object] 我在第二个窗体 (Form1) 上放置一个按钮,按下此按钮时我必须关闭 Form1 对象并导航到 Form2Object,而 ShowDialog() 函数中其所有者必须设置为 frmBlack。

c# modal-dialog
3个回答
0
投票

这是使用 MDI 表单完成的。

您的应用程序将如下所示:http://www.datadynamics.com/Help/AB3/Images/MDI%20Child%20menu.gif

这适用于 winform 项目,不适用于 WPF 项目(至少默认情况下不是)。


0
投票

父母还是业主?这是有区别的。 Parent 仅在 MDI 应用程序中使用(请参阅 Luigi 的帖子)。可以在调用中设置所有者

ShowDialog( owningForm )

你想要实现什么?

hth

马里奥


0
投票

要从窗口中实现您想要的效果,请使用第二个按钮将帖子包到

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();
}

和 frmBlack

{

   frm1.ShowDialog(this);

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

嗯,当然它需要一些复习(比如在它自己的函数中提取下一个处理程序),但你应该明白这个想法。

© www.soinside.com 2019 - 2024. All rights reserved.