我写了一个返回树的所有节点的函数,调试的时候报错:集合已修改,可能无法执行枚举操作,谁能高告诉我错在哪里了

esft 2008-07-22 12:48:27
private TreeNodeCollection GetAllNode(TreeNodeCollection tnc, TreeNodeCollection tncALL)
{
foreach (TreeNode tn in tnc)
{
tncALL.Add(tn);
if (tn.ChildNodes.Count > 0)
{
GetAllNode(tn.ChildNodes, tncALL);
}
}
return tncALL;
}

protected void btnSelectAll_Click(object sender, EventArgs e)
{
TreeNodeCollection tncAll=new TreeNodeCollection();
int a = GetAllNode(TreeView1.Nodes, tncAll).Count;
}
...全文
94 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonsliver 2008-07-28
  • 打赏
  • 举报
回复
。。。那里不清楚?
因为这个东东是引用类型的,所以会指向同一个内存地址。。所以原来那个对象不能修改的。。。
上课去。。晚上在说哈。。。
esft 2008-07-28
  • 打赏
  • 举报
回复
还是不很清楚...
esft 2008-07-22
  • 打赏
  • 举报
回复
不太明白1楼的意思,能说详细点吗
kkun_3yue3 2008-07-22
  • 打赏
  • 举报
回复
建个副本,不要修改原来的TreeNodeCollect
moonsliver 2008-07-22
  • 打赏
  • 举报
回复
private TreeNodeCollection GetAllNode(TreeNodeCollection tnc, TreeNodeCollection tncALL)
中的方法内容修改为:

TreeNode[] tr = new TreeNode[tnc.Count];

tnc.CopyTo(tr, 0);

foreach (TreeNode tn in tr)
{
tncALL.Add(tn);
if (tn.ChildNodes.Count > 0)
{
GetAllNode(tn.ChildNodes, tncALL);
}
}
return tncALL;

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧