0
我在C#中创建递归查找方法Treeview
,并且我想扩展精细节点的所有父节点。这是我的代码:在C#treeview中展开特定节点的所有父节点
private void RecursivFindNode(RadTreeNodeCollection nodes, string nodeName2Find)
{
foreach (RadTreeNode node in nodes)
{
if (node.Text.Contains(nodeName2Find))
{
node.BackColor = Color.Yellow;
NodeExpand(node);
}
RecursivFindNode(node.Nodes);
}
}
private void NodeExpand(RadTreeNode nodeExpand)
{
while (nodeExpand != null)
{
nodeExpand.Expand();
nodeExpand = nodeExpand.Parent;
}
}
但我发现了这个错误:
Collection was modified; enumeration operation may not execute.
我知道我不能修改这在foreach loop
的项目。那么我怎么能使它工作?
为什么一个方法,按名称应该只是“找到”节点(或者说是一个*节点?),也扩大它们/它呢?让它只返回找到的节点。然后有第三种方法,称为“查找”,之后调用“扩展”。此外,将搜索文本作为输入参数可能会更好,而不是从隐蔽文本框中检索它(我认为)。最后,如果你仍然得到这个错误,你可能想要在foreach中实现第二个集合(例如使用Linq的'nodes.ToList()'),看看是否有帮助。 – Corak 2014-11-24 07:29:57
尝试'foreach(var节点中的节点.OfType().ToArray()' –
Vlad
2014-11-24 07:49:49
@Vlad谢谢!这是我的解决方案! – 2014-11-24 09:03:07