我如何将黑色表单作为背景,并且一次打开一个模式表单,其所有者是黑色表单?我需要这两个来保持他们的秩序(最小化和最大化),这就是我选择模态形式的原因。
我制作了一个黑色背景的简单主窗体,并以对话框(模态)形式打开了一个窗体。主窗体为我提供黑色背景,模态窗体保留在黑色背景前面。但是在打开新表单时,我无法将新模态表单的所有者设置为上述黑色表单。我试过传递黑色表单对象并注册事件无济于事。
您是否知道实施以下方案的任何机制:
黑色形式作为背景,一系列模态形式一次一个地在黑色形式前面打开,黑色形式是每个模态形式的所有者。
由于
修改
请考虑这种情况:我有3个名为 frmBlack , Form1 和 Form2 的表单。我使用 frmBlack 作为主要黑色表单。在此表单上放置一个按钮后,我调用Form1Object.ShowDialog(this)。现在假设我要导航到第三种形式(Form2),[这意味着我必须关闭Form1Object]我在第二个窗体(Form1)上放了一个按钮,当按下这个按钮时我必须关闭Form1对象并导航到Form2Object,而ShowDialog()函数中的所有者必须设置为frmBlack。
答案 0 :(得分:0)
这是使用MDI Forms完成的。
您的应用将如下所示:http://www.datadynamics.com/Help/AB3/Images/MDI%20Child%20menu.gif
这适用于winform项目,而不适用于WPF项目(至少在默认情况下不是这样)。
答案 1 :(得分:0)
家长还是老板?这是一个区别。 Parent仅用于MDI-Applications(请参阅Luigi的帖子)。可以在对ShowDialog( owningForm )
的调用中设置所有者。
你想要实现的目标是什么?
HTH
马里奥
答案 2 :(得分: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);
}
}
嗯,当然它需要一些刷新(比如在它自己的函数中提取下一个处理程序,但你应该明白这一点。
HTH
马里奥