非常奇怪的问题,有关资源释放的问题
if   (this.Controls.Count   >    0)   {      //描绘之前将现有已经创建的button释放 
                                                 CtlNum   =   this.Controls.Count; 
                                                 for   (i   =   0;   i    <   CtlNum;   i++)   { 
                                                       this.Controls[i].Dispose();   
                                                 } 
                                                 this.Controls.Clear(); 
                                     }                                    
                                     for   (i   =   StartNum;   i    <   DisplayNum;   i++)   {                     
                                                 abton   =   new   button(); 
                                                 abton.Name   =    "abton "   +   i.ToString();;                                                                                       
                                                    this.Controls.Add(abton);                                                               
                                                 }                                                   
                                     } 
 这些代码是放在自绘控件的onpaint里,编译顺利通过,只是在将该控件放到form里,发生运行时错误,报错为 "Cannot   access   a   disposed   object. 
 Object   name:    'Button ' ".郁闷死我,不知道什么原因,按理由,不该报错的.找了1天,找不出原因
------解决方案--------------------不是很明白!
------解决方案--------------------不知道,up!
------解决方案--------------------要先收集子控件到数组,然后clear,然后用数组调用disposed。clear内部会访问子控件的属性,所以出异常。
------解决方案--------------------学习中~~ 
 友情UP
------解决方案--------------------Control[] controls = new Control[panel1.Controls.Count]; 
 panel1.Controls.CopyTo(controls, 0);   
 foreach (Control c in controls) 
 { 
     c.Dispose(); 
 }     
 不用 clear,dispose 时自动从父控件中移除 
------解决方案--------------------不能访问已被回收的对象 
------解决方案--------------------