主窗体设置MDI模式后(this.IsMdiContainer = true)子窗体显示不出来,怎么搞?详细情况如下:winform 项目  有一个主窗体,很多子窗体一开始我并没有设置主窗体为MDI模式
然后程序完成后  能正常运行,显示方式和功能都正常,
现在主窗体直接设置成MDI模式(this.IsMdiContainer = true), 
并且在子窗体显示的时候直接设置子窗体的MDIParent为主窗体,
但是现在子窗体反而显示不出来了。怎么搞?我感觉子窗体是显示了 只是看不到,下面代码可以测试
WinFormDepotUI.Form1 frm = new WinFormDepotUI.Form1();
frm.MdiParent=this;-------在开始的子窗体显示的代码处插入
frm.Show();
-----------这个完全看不到子窗体WinFormDepotUI.Form1 frm = new WinFormDepotUI.Form1();
frm.Show();
frm.MdiParent=this;-------在开始的子窗体显示的代码处插入
-----------这个看到子窗体突然显示但接着马上又消失
子窗体并不是所有都是直接从主窗体弹出的,也有许多子窗体是从其他子窗体弹出的。
比如
main->child1
main->child2
````````````child2->child4
````````````child2->child5
`````````````````````````child4->child6
main->child3
````````````child3->child7

解决方案 »

  1.   

    是代码的执行顺序问题,使用ShowDialog();永远都在最前边显示
      

  2.   

    this.IsMdiContainer = true
    写哪里了?
      

  3.   

    应当是代码的 执行顺序问题show 放在 最后面
      

  4.   

    frm.Show();
    frm.MdiParent=this;-------在开始的子窗体显示的代码处插入子窗体都显示了,在设置MdiParent怀疑不行吧
      

  5.   


    这个我是项目完成后直接在主窗体中的属性IsMdiContainer中设置的
      

  6.   

    private void button1_Click(object sender, EventArgs e)
     {
    Form2 from = new Form2();
    from.MdiParent = this;
    from.Show();
    }
    这样写完全没有问题的;
    WinFormDepotUI.Form1 frm = new WinFormDepotUI.Form1();
    //WinFormDepotUI这是个啥,是不是跟它有关系?
      

  7.   


    WinFormDepotUI 这个是命名空间
    Form1 是窗体主要是我的主窗体上放了很多控件在上面,比如panel 然后设置了panel的dock为fill,这样子窗体显示出来,但是看不到了。好像显示在panel的后面了。
    现在的问题是如何让它显示在最前面。
      

  8.   

    Form2 from = new Form2();
    from.MdiParent = this;
    from.Show();就OK了..命名空间不要带着
      

  9.   

    这样写:
    Form2 from = new Form2();
    from.MdiParent = this;
    from.Show();
    //在这个后面加上一句代码:
    this.panel1.Controls.Add(f2);//panel1为panel的name
      

  10.   

    其中f2就是Form2的实例,写×了……
      

  11.   

    唯一遗憾的是 form2只能显示在Panel内。