C# 在treeview中扩展一个特殊节点

C# 在treeview中扩展一个特殊节点,c#,.net,winforms,treeview,treenode,C#,.net,Winforms,Treeview,Treenode,我有一个treeview节点,我只想扩展一个特殊节点。我知道通过编写treeView1.ExpandAll()它将扩展所有节点和子节点。但我的意思是这样的: 我也尝试过写这个命令,但它在树中没有影响(!): 这是因为您的最后一个节点可能是树中真正的最后一个节点——在“maniplieren(data)”下面没有文本的节点。 您需要的是treeview节点集合的Find方法 treeview.Nodes.Find(“keyofnode”,包括孩子) 其中,includeChildren告诉该方法

我有一个treeview节点,我只想扩展一个特殊节点。我知道通过编写
treeView1.ExpandAll()
它将扩展所有节点和子节点。但我的意思是这样的:

我也尝试过写这个命令,但它在树中没有影响(!):


这是因为您的最后一个节点可能是树中真正的最后一个节点——在“maniplieren(data)”下面没有文本的节点。 您需要的是treeview节点集合的
Find
方法

treeview.Nodes.Find(“keyofnode”,包括孩子)

其中,
includeChildren
告诉该方法是只搜索顶级还是包括子节点

但是:您需要添加带有键值的节点!像这样:

treeview.Nodes.Add(“keyofNode”、“textofNode”)


请记住:
Find(字符串键,bool searchAllChildren)
返回树节点数组。

首先,确保操作正确的节点。在您的示例中,
treeView1.Nodes.Count
是1(根节点),所以

转化为

TreeNode lastNode = treeView1.Nodes[0].Nodes[0];
这不是你的意图

节点“操作”可以通过

TreeNode lastNode = treeView1.Nodes[0].LastNode;
其次,如果某些父节点未展开,则调用
Expand
是不够的。你需要包括这样的电话

lastNode.Expand();
lastNode.EnsureVisible();
或者像这样手动展开节点及其所有父节点(也可以创建函数)


谢谢你的回答。但是我认为
TreeNode lastNode=treeView1.Nodes[0].Nodes[treeView1.Nodes.Count-1]指的是“操作”而不是“Manipulieren(数据)”。对吗?非常感谢。我没有注意到。这是一个巧妙的说法。
TreeNode lastNode = treeView1.Nodes[0].LastNode;
lastNode.Expand();
lastNode.EnsureVisible();
for (var node = lastNode; node != null; node = node.Parent)
    node.Expand();