集合已修改;可能无法执行枚举操作。
遍历到第二层就出这问题了。 
                         private   static   void   CreateTree(TreeNodeCollection   Nds,   int   parentID,   TList <HROrganization>    list) 
                         { 
                                     TreeNode   tmpNd; 
                                     list.RemoveFilter(); 
                                     list.Filter   =    "ParentID   =    "   +   parentID.ToString(); 
                                     foreach   (HROrganization   hro   in   list) 
                                     { 
                                                 tmpNd   =   new   TreeNode(); 
                                                 tmpNd.Name   =   hro.Depart_ID.ToString(); 
                                                 tmpNd.Text   =   hro.Depart_Name.ToString(); 
                                                 tmpNd.Tag   =   hro; 
                                                 Nds.Add(tmpNd); 
                                                 CreateTree(Nds[Nds.Count   -   1].Nodes,   Convert.ToInt32(hro.Depart_ID.ToString()),   list); 
                                     } 
                         }
------解决方案--------------------在对list进行循环的时候又对list进行了修改,这是不应该的。   
 换个思路来处理这个问题。   
 比如先把这个列表的内容复制一份,对这一份列表循环,然后对List进行修改。
------解决方案--------------------使用foreach时 不能改变集合的数据   
 举例来简单的说就是让你数一个药瓶子里到底有多少药片?   
 可是你一边数 一边有人又在往里添 那么永远都数不清楚
------解决方案--------------------for(int i = 0;i < list.count;i++) 
 { 
 foreach (HROrganization hro in list) 
 { 
 tmpNd = new TreeNode(); 
 tmpNd.Name = hro.Depart_ID.ToString(); 
 tmpNd.Text = hro.Depart_Name.ToString(); 
 tmpNd.Tag = hro; 
 Nds.Add(tmpNd); 
 CreateTree(Nds[Nds.Count - 1].Nodes, Convert.ToInt32(hro.Depart_ID.ToString()), list); 
 list.romove(hro);  
 break; 
 }   
 }
------解决方案--------------------判断下list.count=0
------解决方案--------------------LZ TList 这个东东有点像 DataView   
 foreach 内部使用枚举器迭代,而这个迭代器在一开始的时候就返回了,它的迭代次数已经确定了,   
 但是,你后面又更新了集合,导致之前的迭代次数不一致了   
 当使用 foreach 的时候,集合只能处于只读状态,否则产生不可以预期的效果