C# WinForm子窗体显示(被父窗体控件挡住解决)

父窗体属性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("打开失败!");
            }

 

你可能感兴趣的:(c#,C#,VS,WinForm,MDI窗体,子窗体)