【问题标题】:MDI Child Forms Opening each other with the same parent formMDI子窗体用同一个父窗体相互打开
【发布时间】:2014-07-02 04:52:56
【问题描述】:

所以我有 3 个表单,我们分别称它们为 Form1、Form2 和 Form3。 我已将 Form1 的 IsMDIParent 属性发送为 true。

当我启动应用程序时,它将 Form2 作为 MDI Child 加载使用

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

而且效果很好。然后我想要做的是单击带有第二个表单的按钮,该按钮将关闭 Form2 并将 Form3 作为 Form1 的子表单打开。

我试过了

SecondForm SecondFormMDI = new SecondForm();
SecondFormMDI.MdiParent = Form1;
SecondFormMDI.Show();

Form2中的按钮点击事件,但它不起作用。

我是否必须始终从父表单启动子表单?如果是这样,当它在子窗体上的按钮单击事件上时,我将如何去做?

【问题讨论】:

    标签: c# forms mdi


    【解决方案1】:

    只需使用this.MdiParent,而不是Form1,就像

        SecondForm SecondFormMDI = new SecondForm();
        SecondFormMDI.MdiParent = this.MdiParent;
        SecondFormMDI.Show();
    

    【讨论】:

    • 干杯,不知道我能做到这一点(愚蠢的讲师)
    【解决方案2】:

    你可以在设计时设置任何形式的MDIParent,为什么要在运行时设置呢? 只需将Form2和Form3的MDIParent属性值设置为Form1即可。

    【讨论】:

    • 查看表单的“属性”框,我看不到那里列出的“MDIParent”?
    • 对不起,我记错了,我以为我没记错。
    【解决方案3】:

    您可以在 MDIForm 中创建一个方法来打开子表单:

    public void OpenForm(Form form)
    {
        form.MdiParent = this;
        form.Show();
    }
    

    当您想在另一个表单中打开一个新表单时,您可以执行以下操作(例如 ChildFormOne 中的按钮):

    private void btnOpenChildFormTwo_Click(object sender, EventArgs e)
    {
        ((MDIForm)this.MdiParent).OpenForm(new ChildFormTwo());
        this.Close();
    }
    

    希望这会有所帮助。

    【讨论】:

      【解决方案4】:
      ChildForm frmChild = new ChildForm();
      frmChild.MdiParent = this.MdiParent;
      frmChild.Dock = DockStyle.Fill();
      frmChild.Show();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-28
        • 2020-10-12
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多