[英]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.