if ((classRealtimeDashboard == null) )
            {
                classRealtimeDashboard = new frmRealtimeDashboard();
            }
            classRealtimeDashboard.Show();
            classRealtimeDashboard.BringToFront();//如果已打开,那么直接置最前
frmRealtimeDashboard上的关闭按钮点击后运行this.close();
第一次运行,关闭后,再运行,就会错误。
如果把if ((classRealtimeDashboard == null) )改为if ((classRealtimeDashboard == null)
 || (!classRealtimeDashboard.Created))后就正常。但担心这样会不会不断的在内存创建新的窗体对象?还有Close()不是已经在内存已释放了吗?

解决方案 »

  1.   

    把this.Close()换成this.Dispose()
    或者在this.Close()再加上this.Dispose(),还是会错误。
      

  2.   

    用模态窗口吧,在ShowDialog();后加一句classRealtimeDashboard = null;就行了。
      

  3.   

    class A:Form
    {
    public A(A _ref)

    ref = _ref;
    }
    A ref;public override void OnClose(...)
    {
        ref = null;
    }
    }
      

  4.   

    楼上的,应该是这样吧:
    class A:Form
    {
    public A(ref A _ref)

    Ref = _ref;
    }
    A Ref;public override void OnClose(...)
    {
        Ref = null;
    }
    }