我有一个TreeView,可以在其中选择节点,如下所示:
var Key= long.Parse(currentRow.Cells["Key"].Value.ToString());
var currentNode = tvProjectList.Nodes[0];
currentNode.ExpandAll();
var selectedNode = currentNode.FirstNode.LastNode.LastNode;
如您所见,我仅选择最后一个节点,但我不想仅选择最后一个节点,我想选择Tag
等于变量Key
类似这样的东西:
var selectedNode = currentNode.FirstNode.LastNode.Tag.Where(x => x.Tag == Key);
但是我不能在节点中使用Where子句。
它说:
'object'不包含'Where'的定义,也没有扩展名 接受类型为“ object”的第一个参数的方法“ Where” 找到(您是否缺少using指令或程序集引用?)
如何实现我想要的?
答案 0 :(得分:0)
如果您已分配了唯一的键,并且想按键查找节点,则只需:
mytree.Nodes [0] .Find(“ key_i_am_looking_for”,1);
但是,这显然与您要查找的相反。如果您实际上需要根据标签值查找节点,则唯一的解决方案是从根节点开始,然后递归检查每个节点,直到找到所需标签为止。
private void RecursiveSearch(TreeNode treeNode)
{
foreach (TreeNode tn in treeNode.Nodes)
{
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
{
if(n.tag.toString().Equals("what you want"))
break;
else
RecursiveSearch(n);
}
}
}