我有一些TreeView
,我想按Text
字段进行过滤。我有实现方法。
private bool FilterTreeNode(string searchText, TreeNode node)
{
foreach (TreeNode childNode in node.Nodes)
{
var childNodeResult = FilterTreeNode(searchText, childNode);
if (childNodeResult == false)
{
node.Nodes.Remove(childNode);
}
}
return node.Nodes == null || node.Nodes.Count < 1
? node.Text.ToLower().Contains(searchText)
: true;
}
在其中一次迭代中,此方法引发异常,因为该方法获取node = null
。
我在哪里可以犯错误?
答案 0 :(得分:0)
我认为问题在于,您正在childNode
循环中从要迭代的集合中删除foreach
。
您可以通过在继续操作之前在方法顶部检查节点是否为null来解决此问题,但是我认为通常来说,建立一个包含所需项目的新TreeNode可能更可靠。保留并返回,而不是从原始TreeNode中删除不需要的项目?