问题:我新建了Form1,Form2,Form3。在Form1中申明了一个队列。队列中放了一个Form2对象a和Form3对象b,再在Form1 页面新建一个的Button对象,在该Button对象的Click事件中查找队列中是否存在Form2的对象,如果存在,则把该对象赋给Form x,再执行操作x.Show().在我第一次点击Click事件时能正确显示Form2类型的页面,可是第二次点击的时候就出现以下错误:无法访问已释放的对象。对象名:“Form2”。请问:到底是怎么回事啊?

解决方案 »

  1.   

    则把该对象赋给Form x
    --------
    x后来被你关闭掉了吧?
      

  2.   

    这就对了,因为你把form2的引用给了formx后,你把formx关闭了,就等于关闭了form2,所以form2就被你释放了,你再次使用时,当然就不行了。
      

  3.   

    這樣來做。
    bool existForm2 = true;
    foreach( Form f in yourFormList )
    {
        if( f is Form2 )
        {
           f.Show();
           existForm2 = false;
        }
    }
    if( existForm2 )
    {
       Form2 temp = new Form2;
       yourFormList.add( temp );
       temp.Show();
    }
      

  4.   

    那队列中就会有三个对象了啊.加了一个temp了.