原因是a是一个全局变量,最好是关闭后显式地把它设为nothing。

解决方案 »

  1.   

    a是一个独立的form它不同与form1
    所以form1关闭了,a不会同时关闭你的错误在于你认为a与form1是同一个对象
      

  2.   

    看来这个地方的概念你有点混淆:
    只要你对a进行了赋值,即Set a=new form1后,a的值即是从form1窗体创建的新实例,和窗体是否show无关。也就是说即使你关闭窗体,但窗体实例仍然存在,并未被释放。
    另外:你可以用a.visible来判断窗体是否显示……
      

  3.   

    to xzjxu:
    打开和关闭的都是从form1创建的新实例。被关闭的窗体即是a所指向的窗体。
      

  4.   

    因为A保存了FORM1的引用,即指针,a 所引用的 对象已不存在了,不会自动赋为 nothing,因此typename(a) 总是 form1了。最好在关闭FORM1前把A设为NOTHING。
      

  5.   

    你可以做如此类似的处理
    public a as form1frmClild 中private sub mypoc()
    set a=new form1
    dim i as long
    dim frm as form
    for each frm in vb.forms
        if typename(frm)="form1" then
           if val(frm.tag)>i then i=val(frm.tag) 
        endif
    next
    i=i+1
    a.tag=cstr(i)
    a.show
    end sub
    如此类似的便可有辨别是哪一个Form1了,当然你也可以通过其他属性判断
      

  6.   

    to haor:
    只要你对a进行了赋值,即Set a=new form1后,a的值即是从form1窗体创建的新实例,和窗体是否show无关。我认为确实和SHOW无关,但是应该和 load 和 unload 有关,既然这个新实例已经unload了,a 怎么还是 form1 呢?另外:你可以用a.visible来判断窗体是否显示……我刚试过,无论是否这个用a 生成的form1新实例是否关闭,a.visible 始终为 True,而且非常奇怪的是:
    private sub command1_click()
    command1.caption=cstr(a.visible)    'a的窗口实例已经关闭了,可a.visible为true,而且执行完这句后,a的窗口又重新打开了,你们可以试试,这是不是很莫名其妙啊
    end sub
      

  7.   

    to haor:
    "只要你对a进行了赋值,即Set a=new form1后,a的值即是从form1窗体创建的新实例,和窗体是否show无关。"我认为确实和SHOW无关,但是应该和 load 和 unload 有关,既然这个新实例已经unload了,a 怎么还是 form1 呢?"另外:你可以用a.visible来判断窗体是否显示……"我刚试过,无论是否这个用a 生成的form1新实例是否关闭,a.visible 始终为 True,而且非常奇怪的是:
    private sub command1_click()
    command1.caption=cstr(a.visible)    'a的窗口实例已经关闭了,可a.visible为true,而且执行完这句后,a的窗口又重新打开了,你们可以试试,这是不是很莫名其妙啊
    end sub
      

  8.   

    to ded:
    我想知道的是 a 所成成的窗口是打开还是关闭了
      

  9.   

    如果想让它可以变为nothing,定义时用:public a as form而不用form1
      

  10.   

    to prefix:
    你说的,我试过了,好象不是象你所说的那样
    你自己试过了吗?
      

  11.   

    你的form虽然unload了但是变量a中仍保持了对该窗体实例的引用。
    我刚才试过了用visible的确可以判断
    而且我也试了你写的代码即:command1.caption=cstr(a.visible)    
    不存在你说的问题呀
      

  12.   

    当你引用a的任何属性后,a将被重新加载,除非你子显式的Unload a
    Set a = Nothing
      

  13.   

    to haor:
    我又重新试了,你说的没错。昨天不知道怎么会有那个奇怪的现象的。