c# – Winform Treeview按标签查找节点

前端之家收集整理的这篇文章主要介绍了c# – Winform Treeview按标签查找节点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个树视图,显示成员可能有重复,标签不会.例:
TreeNode node = new TreeNode(itemName);
node.Tag = itemID; //unique ID for the item
treeView1.Nodes.Add(node);

所以,当搜索时,我知道我可以通过使用itemName来搜索

treeView1.Nodes.Find(itemName,true);

但是我怎么可以通过标签搜索?没有关于treeView1.Nodes.Where的定义,所以没有linq给我:(

关于如何通过标签搜索的任何建议? :) 谢谢!

解决方法

尝试这个:
var result = treeView1.Nodes.OfType<TreeNode>()
                            .FirstOrDefault(node=>node.Tag.Equals(itemID));

注意:因为你说你的itemID是唯一的,所以你可以使用FirstOrDefault来搜索唯一的项目.如果没有找到结果将为null.

UPDATE

搜索所有级别的所有节点,您可以尝试使用一些递归方法,如下所示:

public TreeNode FromID(string itemId,TreeNode rootNode){
   foreach(TreeNode node in rootNode.Nodes){
     if(node.Tag.Equals(itemId)) return node;
     TreeNode next = FromID(itemId,node);
     if(next != null) return next;
   }
   return null;
}
//Usage    
TreeNode itemNode = null;
foreach(TreeNode node in treeView1.Nodes){
  itemNode = FromID(itemId,node);
  if(itemNode != null) break;
}

猜你在找的C#相关文章