本帖最后由 cydfli 于 2011-04-11 09:08:30 编辑

解决方案 »

  1.   

    说实话没看懂,不过可能是因为你把它关了而不是隐藏起来,所以下次打开的时候这个东西已经没有了,怎么能show()。如果这个窗体只能有一个的话,建议参考 单例模式 。
      

  2.   

    OwnedForms集合里的窗体是不保证顺序的,你最好用foreach选出你要的窗体类型或采用其他方法。直接取下标是非常不安全的。
      

  3.   

    先判断一下OwnedForms[0]是否为空
      

  4.   

    刚刚试了下,检测是否为空,结果还是下标越界,可能是关闭窗体时窗体对象就被销毁了,我检查ownedforms集合结果为空,现在我在子窗体的关闭事件代码中写了重新创建子窗体对象,可以正常运行,不过不知道有没有别的什么方法,觉得这个方法太耗了
      

  5.   

    kudorun,你说的单例模式在哪儿
      

  6.   

    可以采用这种方式吗:就是每次需要显示窗体的时候,都去New一个出来,这样子,就不会有你说的这个问题了
      

  7.   

    每次都NEW一个出来,可以解决上面的问题,不过它太耗了,个人觉得现在我用子窗体的closing事件,禁止了关闭子窗体,可是,现在是主窗体关闭不了了,因为在主窗体关闭事件发生时它有子窗体,只能在子窗体中再设置条件判断主窗体是不是要关闭,来决定是否允许关闭。如果这样的话,就不用每次销毁重建,只用一开始创建一个对象就OK了,但是,上面这个怎么实现呢??
      

  8.   

    对于一个程序员,没有听说过单例模式真的让人惊讶。class Singleton
    {
        private static Singleton instance = new Singleton();
        private Singleton() { }
        public static Singleton GetInstance() { return instance; }
    }