父窗体A,子窗体B,子窗体C
A是B和C父窗体将A的IsMDIContainer属性设置为 Ture
通过A窗体打开B窗体时
B b=new b();
b.mdiParent=this;
b.show();
这样打开的B窗体就在A窗体内部现在有问题是这样的
1.C窗体是通过B窗体打开的,怎样实现C窗体也包含在A窗体内部
2.打开C窗体时,通过this.Visaible=false; 把B窗体隐藏了,点击C窗体中的一个按钮,使用 B b=new B(); B.Visible=true;
打开了B窗体,此时B窗体脱离了A窗体,这样怎么解决呀。

解决方案 »

  1.   

    C不是在B中打开的么,然后把B当做参数传给C,显示的时候调用那个参数让B显示,你这样是新开了一个窗口,原来那个还没关。而且你没有把这个新窗口设置为A的子窗体。
      

  2.   

    第一个问题解决了,在B窗体打开C窗体,C窗体做为A窗体的子窗体,使用
    C c=new C();
    c.MdipParent=this.ParentForm;可实现第二个问题怎么实现呢?
      

  3.   

    new c时把B当参数传过去
    或用单例模式
      

  4.   

    怪不得这几年,硬件速度按摩尔定律增长,但谁家的电脑都越来越慢,看来就是你的想法造成的.
    你可以在打开C时,关掉B(B在打开C时,把this关了就完事了).重新打开B,和当年B如何打开C时的处理方式应该是一样的.用Hide的方法去解决显示的问题,这个想法真2,这服里面有v多的玩家,别管自己几个星,还不断的推崇这种方法,不知这伙2们,到里安的是什么心.
      

  5.   

    第二个问题也解决了,但总感觉有些不太妥
    用C窗口打开B窗口时
    B b=new B();
    b.MdiParent=this.Parent;
    b.Visable=True;
    这样打开B窗体时,B窗体又回到A窗体里面了但是这里又新创建了一个B,感觉不太对呀楼上説用参数传,是啥意思啊,不太懂! 代码咋实现呢?
      

  6.   

    b.Visable=True;
    这种代码,我这辈子都没写过我写的软件从来没有隐藏过窗体这问题我回答不了你了.
    如果我认为这种代码没有意义,那肯定,当年非把B隐藏了就没意义.