繁体   English   中英

从另一个 MDIChild 窗体显示 MDIChild 窗体

[英]Show MDIChild Form from another MDIChild Form

让我们有MDIParentForm (Home)子窗体 (Form1, Form2)Home有一个Menu (Add)Form1按钮 (btnOk)

'''''这里是C#代码''''''

 public partial class Home : DevExpress.XtraBars.Ribbon.RibbonForm
{
    public Home()
    {
        InitializeComponent();
    }
    public void  CreateForm(Form frm)
    {
        frm.MdiParent = this;
        frm.WindowState = FormWindowState.Maximized;
        frm.Show();
    }
    private void btnAddForm_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
        Form1 frm = new Form1();
        CreateForm(frm);
    }
}
//Up to this 1st level my code works fine.
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void btnDone_Click(object sender, EventArgs e)
    {
//From Here I am not able show the Form2.
        Home MDIParentForm = new Home();
        Form2 frm = new Form2();
        MDIParentForm.CreateForm(childForm);
    }
}

操作:单击添加菜单时我曾经打开Form1 (它工作正常),单击btnOk我想打开Form2 (这是另一个 MDIChild 表单)。

让我知道我们如何完成这项任务。

您所做的是创建 MDI 父级的另一个实例,并将Form2设置为这个新创建的 MDI 父级的子级。 这显然是错误的,您希望两者都是同一个父母的孩子。

要么直接这样做:

private void btnDone_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    // both have the same MDI parent
    frm.MDIParent = this.MDIParent;
    frm.Show();
}

或者,如果您坚持重复使用您的CreateForm

private void btnDone_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    ((Home)this.MDIParent).CreateForm( frm );
}

这两种方法都依赖于在 form1 中设置的this.MDIParent ,并确保为新创建的 form2 使用相同的实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM