加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:34:51 所属栏目:百科 来源:网络整理
导读:我有一个树视图,显示成员可能有重复,标签不会.例: TreeNode node = new TreeNode(itemName);node.Tag = itemID; //unique ID for the itemtreeView1.Nodes.Add(node); 所以,当搜索时,我知道我可以通过使用itemName来搜索 treeView1.Nodes.Find(itemName,tru
我有一个树视图,显示成员可能有重复,标签不会.例:
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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读