ASP.NET 2.0 foreach遍历TreeView,删除符合条件节点,报集合已改变错误~!!!
foreach (TreeNode tn in tnc)
{
if (tn.Text.Equals( "aaa "))
{
tnc.Remove(tn);
//return 如果用return,可以解决报错问题.但不会再往下遍历
}
CheckNode(tn.ChildNodes);
}
使用上述方法可以遍历所有节点,也可以删除符合条件节点.但用Foreach遍历集合删除后,会报错.
有没有不用Foreah遍历方法.或者有什么别的解决方法.
------解决方案--------------------不能用foreach
只能用for
foreach对于读取的对象是只读的操作.
------解决方案--------------------if (tn.Text.Equals( "aaa "))
{
tnc.Remove(tn);
//return 如果用return,可以解决报错问题.但不会再往下遍历
}
else
{
CheckNode(tn.ChildNodes);
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------就好像
你从桶中把水舀出的同时还将桐高度用锯子锯低
1 用while 循环
2 用for 循环 从后向前
for(int i = YourCollectionOjbect.count-1; i> 0; i--){
}
------解决方案--------------------YEAH!
------解决方案--------------------//--用递归删除
private void delTreeNode(TreeNode pNode)
{
if(pNode.ChildNodes.Count > 0)
{
for(int ix=0; ix <pNode.ChildNodes.Count; ix++)
{
TreeNode delNode = pNode.ChildNodes[ix];
delTreeNode(delNode);
YourTreeID.Nodes.Remove(delNode);
}
}
}
------解决方案--------------------up
------解决方案--------------------从最低层的一级删除呢?
------解决方案--------------------MARK
------解决方案--------------------foreach过程中不允许对集合进行改动的,改用一般的循环吧。
------解决方案--------------------ok
------解决方案--------------------foreach只允许改动,楼上几位都回答完了
------解决方案--------------------不能用foreach ,foreach对于读取的对象是只读的操作.
只能用for