自己写了一个控件,想用一个静态的类来管理所加的控件,即:当控件加到窗口上时,控件数就加一,然后设置控件的一个ID属性(唯一性),如果在设计时从窗口删除这种类型的一个控件,那么静态类管理的控件数就减一,我在控件的析构函数中写了减一的代码,但由于资源是GC管理的,所以肯定不会立即回收,也即静态类的控件数其实并没有减一,直到控件完全析构了才会减一,在删除的这个控件没有析构时,我又加了一个自已写的控件,此时静态类管理的控件数会与窗口显示的控件数不一致.不知道如何解决,给先50吧,谢谢!!!

解决方案 »

  1.   

    不必等控件直正的释放掉再减小数值,而是调用了控件的Dispose()方法后就减小(或者调用了Close、Remove之类的方法)
    每次新加一个控件的时候直接使用New来新建而不必管原来的对象是否释放掉了。
      

  2.   

    但在设计期,用户按Del键删除了这个控件,我不清楚会触发什么事件,所以没有办法调用Dispose()方法,不知道这种方法是否可行,由于知识有限,望大侠指教!!
      

  3.   

    在该控件的designer类中调用IDesignerHost 实例的 DestroyComponent 方法.
      

  4.   

    我是WinForm控件,designer类是用于Web窗体的吧?
      

  5.   

    明白了,是控件要继承IDesignerHost接口吧?没有用过,找找资料,谢谢!!
      

  6.   

    写一个池类,控件创建一个就加入池中,池中有二个方法,一个加入实例,一个释放实例,
    释放实例方法以控件ID为参数.然后在控件类的析构方法中加入
    池.释放(this.ID);看看
    没调试,有结果发上来共同学习学习