为什么foreach语句删除不干净,怎么办啊,我又问了一遍。

解决方案 »

  1.   

    不能在foreach中进行删除,因为这样会破坏了collection,轻则不能完成功能,重则会出异常。
    sample code as follows:
    for( int i = yourTreeView.Nodes.Count - 1; i >= 0; i-- )
    {
         if( yourTreeView.Nodes[i].Checked )
              yourTreeView.Nodes.Remove( yourTreeView.Nodes[i] );
         else
              RemoveCheckedNode(  yourTreeView.Nodes[i] );
    }// RemoveCheckedNode Function
    private void RemoveCheckedNode( TreeNode tnParent )
    {
         for( int i = tnParent.Nodes.Count - 1; i >= 0; i-- )
         {
              if( tnParent.Nodes[i].Checked )
                   tnParent.Nodes.Remove( tnParent.Nodes[i] );
              else
                   RemoveCheckedNode(  tnParent.Nodes[i] );
         }}