我有一个treeview节点,我只想扩展一个特殊节点。我知道通过编写treeView1.ExpandAll()
,它将扩展所有节点和子节点。但我的意思是这样的:
我也试过扭曲这个命令,但它对树没有影响(!):
TreeNode lastNode = treeView1.Nodes[0].Nodes[treeView1.Nodes.Count - 1];
lastNode.Expand();
答案 0 :(得分:0)
那是因为你的最后一个节点可能是树中的最后一个节点 - 在“Manipulieren(数据)”下面没有文字的节点。
您需要的是树视图节点集合的Find
方法。
treeview.Nodes.Find("KeyOfTheNode",includeChildren)
其中includeChildren
告诉方法它是应该仅搜索顶级还是包含子节点。
但是:您需要添加具有键值的节点!像这样:
treeview.Nodes.Add("KeyOfTheNode", "TextOfTheNode")
并记住:Find(string key, bool searchAllChildren)
返回一个TreeNodes数组。
答案 1 :(得分:0)
首先,确保操纵正确的节点。在您的示例中,treeView1.Nodes.Count
是1(根节点),所以
TreeNode lastNode = treeView1.Nodes[0].Nodes[treeView1.Nodes.Count - 1];
转换为
TreeNode lastNode = treeView1.Nodes[0].Nodes[0];
这不是你的意图。
节点"动作"可以使用
检索TreeNode lastNode = treeView1.Nodes[0].LastNode;
其次,如果某些父节点未展开,则调用Expand
是不够的。您需要包含EnsureVisible这样的电话
lastNode.Expand();
lastNode.EnsureVisible();
或手动展开节点及其所有父节点(您也可以创建一个函数)
for (var node = lastNode; node != null; node = node.Parent)
node.Expand();