如何在不搜索的情况下将节点设置为winforms treeview中选定的节点

如何在不搜索的情况下将节点设置为winforms treeview中选定的节点,winforms,treeview,Winforms,Treeview,当我说: treeview.SelectedNode = new TreeNode{ Text = "Myname" }; 尽管treeview nodes集合中存在包含此文本的节点,但此操作将不起作用 如何在不搜索节点实例的情况下以编程方式将节点设置为选中,然后再选择它?添加节点时,还可以为其设置一个键,例如: treeview.Nodes.Add("a node", "a node"); treeview.Nodes.Add("b node", "b node"); treeview.S

当我说:

treeview.SelectedNode = new TreeNode{ Text = "Myname" };
尽管treeview nodes集合中存在包含此文本的节点,但此操作将不起作用


如何在不搜索节点实例的情况下以编程方式将节点设置为选中,然后再选择它?

添加节点时,还可以为其设置一个键,例如:

treeview.Nodes.Add("a node", "a node");
treeview.Nodes.Add("b node", "b node");
treeview.SelectedNode = treeView.Nodes.Find("b node", true); 
这样,如果要选择节点,可以使用其键进行选择,例如:

treeview.Nodes.Add("a node", "a node");
treeview.Nodes.Add("b node", "b node");
treeview.SelectedNode = treeView.Nodes.Find("b node", true); 

通过这种方式,您可以避免手动迭代所有节点以检查其文本是否匹配。

添加节点时,您也可以为其设置一个键,例如:

treeview.Nodes.Add("a node", "a node");
treeview.Nodes.Add("b node", "b node");
treeview.SelectedNode = treeView.Nodes.Find("b node", true); 
这样,如果要选择节点,可以使用其键进行选择,例如:

treeview.Nodes.Add("a node", "a node");
treeview.Nodes.Add("b node", "b node");
treeview.SelectedNode = treeView.Nodes.Find("b node", true); 

通过这种方式,您可以避免手动迭代所有节点以检查其文本是否匹配。

这在我的情况下不起作用。抱歉。.Nodes[MyName/Key]返回的节点始终为null,尽管该节点位于具有Key/name的Nodes集合中。是否执行上述示例,但使用treeview.SelectedNode=treeview.Nodes.Find(“节点键”,true);对你有效吗?上面的代码也有效,我假设你有父节点,并且你正在寻找其中的节点,因此为什么它不起作用,我将使用Find方法更新我的答案。如果您不想使用Find方法,原则仍然与我之前发布的代码相同(假设您有子节点)。treeview.Nodes[“主节点密钥”]。Nodes[“子节点密钥”];我已经使用了Find方法,由于我的递归层次结构,我必须坚持使用这种方法。如何在以前创建的节点上设置键,或者在创建节点时如何在节点上设置键?似乎您不能这样做,如果您希望指定密钥,则必须在添加到Nodes集合时创建节点。我可以看到在添加到集合时分配密钥,但为什么没有.Add(节点,密钥)重载?这在我的情况下不起作用抱歉。.Nodes[MyName/Key]返回的节点始终为null,尽管该节点位于具有Key/name的Nodes集合中。是否执行上述示例,但使用treeview.SelectedNode=treeview.Nodes.Find(“节点键”,true);对你有效吗?上面的代码也有效,我假设你有父节点,并且你正在寻找其中的节点,因此为什么它不起作用,我将使用Find方法更新我的答案。如果您不想使用Find方法,原则仍然与我之前发布的代码相同(假设您有子节点)。treeview.Nodes[“主节点密钥”]。Nodes[“子节点密钥”];我已经使用了Find方法,由于我的递归层次结构,我必须坚持使用这种方法。如何在以前创建的节点上设置键,或者在创建节点时如何在节点上设置键?似乎您不能这样做,如果您希望指定密钥,则必须在添加到Nodes集合时创建节点。我可以看到在添加到集合时分配键,但为什么没有.Add(节点,键)重载?