C#Treeview键全路径

时间:2015-06-11 17:35:32

标签: c# winforms treeview

这个树视图添加了如下节点:

tree.Nodes.Add("key", "DisplayText");
tree.Nodes["key"].Nodes.Add("key2", "DisplayText2);

我想获取当前所选节点的完整路径,但我希望键的路径不是显示文本的路径。

如果选择了第二个节点,则tree.FullPath属性将返回以下内容:

"DisplayText\\DisplayText2"

但这对我来说毫无意义,我需要的是

"Key\\Key2"

获取完整密钥路径的最快方法是什么?

3 个答案:

答案 0 :(得分:2)

TreeNode.Name会为您提供关键值。没有这样的属性/方法来返回包含键值的路径。 FullPath会为您提供显示值的路径。您可以使用以下内容来递归以构建具有键值的路径:

public string GetKeyPath(TreeNode node)
{
    if (node.Parent == null)
    {
        return node.Name;
    }

    return GetKeyPath(node.Parent) + "//" + node.Name;
}

答案 1 :(得分:1)

这是一个伪代码粗略的想法......不是完整的代码,只是为了让您了解从哪里开始:

string ParentNodeName(TreeNode node)
{
    if (node.Parent == null)
    {
        return node.Name;
    }
    else
    {
        return ParentNodeName(node.Parent);
    }
}

答案 2 :(得分:1)

因为无论如何我需要一个数组,我想我可以创建一个接收Treenode的函数并返回一个包含键的字符串数组。

    private string[] FullKeyPath(TreeNode tn)
    {
        string[] path = new string[tn.Level + 1];
        for (int i = tn.Level; i >= 0; i--)
        {
            path[i] = tn.Name.ToString();
            if (tn.Parent != null)
            {
                tn = tn.Parent;
            }
        }
        return path;
    }