父窗体属性isMdiContainer=true(右图visual studio直接改),并在子窗体打开事件中如下所写,昨天还正常,今天打开子窗体发现,子窗体没弹出来,最后发现被挡在了父窗体控件下面。
try
{
Form1 frm = new Form1();
frm.MdiParent = this;//父容器为主窗体
frm.Show();
}
catch
{
MessageBox.Show("打开失败!");
}
最后两种办法解决,
- 1.子窗体显示在父窗体控件之上
我写的父窗体所有控件都在panel容器控件里,所以让子窗体显示在panel上面就ok
try
{
Form frm = new Form();
frm.TopLevel = false;//设置它的顶级为false
frm.Parent = this.panel1; //设置子窗体的父容器控件是panel控件
frm.Show();
frm.BringToFront();//设置子窗体在最上面
}
catch
{
MessageBox.Show("打开失败!");
}
- 2.子窗体作为控件内嵌到mdi主窗体panel控件上
try
{
Form frm = new Form();
frm.TopLevel = false;//设置它的顶级为false
panel1.Controls.Add(frm); //设置panel控件中控件集合应该包括frm子窗体
frm.Show();
}
catch
{
MessageBox.Show("打开失败!");
}