从另一个子表单打开子表单并将MDI设置为父表单 - 怎么办?

时间:2011-11-01 13:05:44

标签: c# winforms mdichild mdiparent

我有一份MDI表格。在此MDI表单中,我可以使用以下命令打开一些子表单:

这在MainForm

之内
Form1 f1 = new Form1;
f1.MdiParent = this; //this refers to MainForm (parent)
f1.Show();

这可以按预期工作!

但是现在,当我处于子格式(Form1 - > f1)时,我想打开另一个表单作为MainForm的孩子,但是当我使用this关键字时,它会返回{ {1}}。如何在f1中打开新表单并将其f1设置为MdiParent

5 个答案:

答案 0 :(得分:35)

尝试从以下位置指定您的第一个孩子的父表格:

Form2 f2 = new Form2;
f2.MdiParent = this.ParentForm; //this refers to f1's parent, the MainForm
f2.Show();

希望这有帮助。

答案 1 :(得分:12)

让我们假设第二种形式是f2。然后,表单f1中用于在MDI父表单中创建新表单f2的代码将是:

Form2 f2 = new Form2;
f2.MdiParent = this.MdiParent;
f2.Show();

答案 2 :(得分:4)

好吧,不要与"解决方案争论"列出的......但如果我正确理解了请求并尝试上述解决方案无效,我会做以下事情....

Form2 f2 = new Form2();
        f2.MdiParent = MDIParent1.ActiveForm;
        f2.Show();

答案 3 :(得分:0)

让我们假设第二种形式是frm2。然后,以frm1形式在MDI父表单中创建新表单frm2的代码将是:创建新对象,然后再次检索数据mdiparent表单解决了冻结处置表单

Dim dru as New frm2 '// another form call
dru = New frm2
dru.mdiparent = frm1 '// main forms
dru.show()

答案 4 :(得分:0)

我遇到了同样的问题,并尝试了所有不同的解决方案。最后,对我有用的是:

Dim ChildForm As New AddingText("")
' Make it a child of this MDI form before showing it.
ChildForm.MdiParent = MDIParent1
ChildForm.Dock = DockStyle.Fill
MDIParent1.m_ChildFormNumber += 1
ChildForm.Text = "Client Existent" & MDIParent1.m_ChildFormNumber
ChildForm.Show()

打ic是无法与ShowDialog()一起使用的,但我可以忍受。