我有一份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
?
答案 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()一起使用的,但我可以忍受。