制作MDI的正常形式

时间:2011-07-29 14:40:47

标签: vb.net user-interface

我正在开发一个应用程序,我必须在其中显示不同的形式。由于一些限制,我不能使用MDI,也有很多问题。

我能够得到我想要但有问题的东西。表单将被堆叠,但它们不会保留在父表单中。 让我们举一个例子。结构是这样的。 1)表格A(我的父母表格) 2)在表格“A”上的按钮点击事件上打开第二个表格“B”。 (注意:B.ShowInTaskBar = False) 3)再次,在表格“B”上的按钮点击事件上打开第三种形式“C”。 (注意:C.ShowInTaskBar = False)

现在,当我最小化表单A时,它会被最小化,但表单B和表单C保持不变。我希望它们同时最小化。我希望表格B和C应该保留为表格A的子表格。

如何做到。

2 个答案:

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