从另一个 MDI 子窗体显示 MDI 子窗体
Show MDIChild Form from another MDIChild Form
让我有 MDIParentForm (Home), Child Form (Form1, Form2), Home有一个菜单(添加)和Form1有按钮(btnOk)
'''''Here is C# Code''''''
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);
}
}
操作:单击 Add 菜单我曾经打开 Form1(它工作正常)并单击 btnOk 我想打开 Form2(这是另一个 MDIChild 窗体)。
让我知道我们如何完成这项任务。
您所做的是创建另一个 MDI parent 实例,并将 Form2
设置为这个新创建的 MDI parent 的 child。这显然是错误的,您希望两者都是 children of the very same parent.
要么直接这样做:
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。
让我有 MDIParentForm (Home), Child Form (Form1, Form2), Home有一个菜单(添加)和Form1有按钮(btnOk)
'''''Here is C# Code''''''
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);
}
}
操作:单击 Add 菜单我曾经打开 Form1(它工作正常)并单击 btnOk 我想打开 Form2(这是另一个 MDIChild 窗体)。
让我知道我们如何完成这项任务。
您所做的是创建另一个 MDI parent 实例,并将 Form2
设置为这个新创建的 MDI parent 的 child。这显然是错误的,您希望两者都是 children of the very same parent.
要么直接这样做:
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。