我正在开发一个应用程序,我必须在其中显示不同的形式。由于一些限制,我不能使用MDI,也有很多问题。
我能够得到我想要但有问题的东西。表单将被堆叠,但它们不会保留在父表单中。 让我们举一个例子。结构是这样的。 1)表格A(我的父母表格) 2)在表格“A”上的按钮点击事件上打开第二个表格“B”。 (注意:B.ShowInTaskBar = False) 3)再次,在表格“B”上的按钮点击事件上打开第三种形式“C”。 (注意:C.ShowInTaskBar = False)
现在,当我最小化表单A时,它会被最小化,但表单B和表单C保持不变。我希望它们同时最小化。我希望表格B和C应该保留为表格A的子表格。
如何做到。
答案 0 :(得分:3)
只需使用MDI表单。关于FormBorderStyle
对MDI儿童的价值没有技术限制。请记住为父表单设置IsMdiContainer属性为true
,然后在调用Show()
之前将子表单的MdiParent属性设置为父表单。
修改强> 我不完全确定堆叠的意思。如果这是你的意思,你可以轻松控制孩子的位置:
public void ShowChildren()
{
Child child1 = new Child();
Child child2 = new Child();
child1.MdiParent = this;
child2.MdiParent = this;
child1.Show();
child2.Show();
child1.Size = new System.Drawing.Size(100, 100);
child1.Location = new System.Drawing.Point(0, 0);
child2.Size = new System.Drawing.Size(100, 100);
child2.Location = new System.Drawing.Point(0, 100);
}
编辑#2:
你试图嵌套表格吗?如果是这样,您可以将父级设为正常形式,并在父级中放置UserControl
A.然后将UserControl
B放在UserControl
A中。允许用户移动这些变得更加困难,但如果您已经不想要边框,那么这对您来说可能不是问题。
答案 1 :(得分:-1)
public void formMain_buttonShowA_click() {
FormA formA = new FormA();
formA.ShowDialog();
}
public void formA_buttonShowB_click() {
FormB formB = new FormB();
formB.ShowDialog();
}