展开C#treeview中特定节点的所有父节点

时间:2014-11-24 06:07:26

标签: c# treeview treenode

我在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中的项目。那么我怎样才能让它发挥作用呢?

1 个答案:

答案 0 :(得分:1)

正如@Vlad建议的那样,我将foreach更改为:

foreach (var node in nodes.OfType<RadTreeNode>().ToArray())

现在一切正常。 :)