从另一个子表单打开子表单并将MDI设置为父表单-如何做

本文关键字:表单 设置 何做 另一个 MDI | 更新日期: 2023-09-27 18:12:53

我有一个MDI表单。在这个MDI表单中,我可以使用:

打开一些子表单:

这是在MainForm

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

按预期工作!

但是现在,当我在子窗体(Form1 -> f1)我想打开另一个窗体作为MainForm的子窗体,但当我使用this关键字时,它将指的是f1。如何在f1中打开新表单并将其MdiParent设置为MainForm ?

从另一个子表单打开子表单并将MDI设置为父表单-如何做

尝试从:

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

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

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

好吧,我不想和上面列出的"解决方案"争论…但如果我正确理解请求并尝试上述解决方案不起作用,我会执行以下操作....

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

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

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

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

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()结合使用,但是我可以忍受它