13

我有一个 MDI 表格。在这个 MDI 表单中,我可以使用以下方法打开一些子表单:

这是在MainForm

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

这按预期工作!

但是现在,当我处于子表单(Form1 -> f1)时,我想打开另一个表单作为子表单,MainForm但是当我使用this关键字时,它会引用f1. 如何在其中打开新表单f1并将其设置MdiParentMainForm

4

5 回答 5

41

尝试从以下位置分配您的第一个孩子的父表单:

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

希望这可以帮助。

于 2011-11-01T13:19:31.603 回答
12

让我们假设第二个窗体是 f2。那么,在窗体 f1 中在 MDI 父窗体中创建一个新窗体 f2 的代码将是:

Form2 f2 = new Form2;
f2.MdiParent = this.MdiParent;
f2.Show();
于 2011-11-01T13:18:41.607 回答
5

好吧,不要与列出的“解决方案”争论......但如果我正确理解请求并尝试上述解决方案不起作用,我会做以下......

Form2 f2 = new Form2();
        f2.MdiParent = MDIParent1.ActiveForm;
        f2.Show();
于 2012-11-01T06:02:09.327 回答
0

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

Dim dru as New frm2 '// another form call
dru = New frm2
dru.mdiparent = frm1 '// main forms
dru.show()
于 2020-08-21T02:59:07.590 回答
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()

打嗝是不能与 ShowDialog() 一起使用,但我可以忍受它。

于 2020-09-19T04:10:06.473 回答