在树视图中描述一个特殊节点

时间:2016-02-05 07:17:46

标签: c# .net winforms treeview treenode

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

enter image description here

我也试过扭曲这个命令,但它对树没有影响(!):

TreeNode lastNode = treeView1.Nodes[0].Nodes[treeView1.Nodes.Count - 1];
lastNode.Expand();

2 个答案:

答案 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();