我在mdi窗体中建了3个子窗体form1 form2 form3
在MDI窗体的菜单中建立三个子菜单,分别执行
form1.show form2.show form3.show但是我再点击一个子菜单,例如执行form2.show
但是窗口还是显示上一个窗口form3请问怎样才能改变这种情况呢
我知道 unload form1
       unload form3
       show form2
可以实现
但是我的子窗体太多了,有20多个
有别的办法么

解决方案 »

  1.   

    Dim frm As Form
        
        For Each frm In Forms
            Unload frm
        Next
    这是关闭所有的窗口,然后打开你想要的窗口就行了.
      

  2.   

    将指定的 MDIForm,Form 或控件放置在其图层的z-顺序的前端或后端。不支持命名参数。
    object.ZOrder positionposition参数,可选的。一个整数,它用以指示 object 相对于同一 object 其它实例的位置。如果 position 为 0 或被省略,则 object 定位在Z-顺序前面。如果 position 为 1,则 object 定位在Z-顺序后面。具体
    form.zorder 0  显示在所有对象之前
      

  3.   

    试一下SoHo_Andy(冰)的方法,他是对的
    我碰到过
      

  4.   

    在每个show之后加setfoucs,
    例如form1.show 
        form1.SetFocus     form2.show
        form2.SetFocus 
         .....
      

  5.   

    在每个show之后加setfoucs,
    例如form1.show 
        form1.SetFocus 
    最好再加一句If Form2.WindowState = 1 Then Form2.WindowState = 0 或1
      

  6.   


    ZOrder 方法
          将指定的 MDIForm,Form 或控件放置在其图层的z-顺序的前端或后端。不支持命名参数。语法object.ZOrder positionZOrder 方法的语法包含下列部分:部分 描述 
    object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则具有焦点的 Form 对象缺省为 object。 
    Position  可选的。一个整数,它用以指示 object 相对于同一 object 其它实例的位置。如果 position 为 0 或被省略,则 object 定位在Z-顺序前面。如果 position 为 1,则 object 定位在Z-顺序后面。 
    说明在设计时选择“编辑”菜单中的“置前”或“置后”菜单命令,可以设置对象的Z-顺序。在 MDIForm 对象内,Zorder 根据 position 的数值决定将 MDI子窗体放置到 MDI 客户区的前面或后面。对于 MDIForm 或 Form 对象,Zorder 根据 position 的数值决定将窗体放置到屏幕的前面或后面。因此,窗体可以显示在其它运行中的应用程序的前面或后面。有三个图层与窗体和容器相关联。后层是显示图形方法结果的绘图空间。下一个是中层,用来显示图形对象和 Label 控件。前层显示所有非图形控件,如 CommandButton、CheckBox 或 ListBox。靠近前层的层中包含的东西将覆盖该层后面的各层包含的东西。Zorder 只对该对象在其中显示的那一层内的各个对象进行重排。