C# Treeview 键全路径
C# Treeview keys fullpath
有这样添加节点的树视图:
tree.Nodes.Add("key", "DisplayText");
tree.Nodes["key"].Nodes.Add("key2", "DisplayText2);
我想获取当前选中节点的完整路径,但我要的是key的路径,而不是显示文本的路径。
如果选择第二个节点,tree.FullPath属性将return如下:
"DisplayText\DisplayText2"
但这对我来说毫无意义,我需要的是
"Key\Key2"
获取完整密钥路径的最快方法是什么?
这是一个伪代码粗略的想法。不是完整的代码,只是为了让您了解从哪里开始:
string ParentNodeName(TreeNode node)
{
if (node.Parent == null)
{
return node.Name;
}
else
{
return ParentNodeName(node.Parent);
}
}
TreeNode.Name
将为您提供关键值。没有这样的 property/method 到 return 包含键值的路径。 FullPath
将为您提供带有显示值的路径。您可以使用类似这样的键值递归构建路径:
public string GetKeyPath(TreeNode node)
{
if (node.Parent == null)
{
return node.Name;
}
return GetKeyPath(node.Parent) + "//" + node.Name;
}
因为无论如何我都需要一个数组,所以我想我可以创建一个函数来接收一个 Treenode 和 returns 一个包含键的字符串数组。
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;
}
有这样添加节点的树视图:
tree.Nodes.Add("key", "DisplayText");
tree.Nodes["key"].Nodes.Add("key2", "DisplayText2);
我想获取当前选中节点的完整路径,但我要的是key的路径,而不是显示文本的路径。
如果选择第二个节点,tree.FullPath属性将return如下:
"DisplayText\DisplayText2"
但这对我来说毫无意义,我需要的是
"Key\Key2"
获取完整密钥路径的最快方法是什么?
这是一个伪代码粗略的想法。不是完整的代码,只是为了让您了解从哪里开始:
string ParentNodeName(TreeNode node)
{
if (node.Parent == null)
{
return node.Name;
}
else
{
return ParentNodeName(node.Parent);
}
}
TreeNode.Name
将为您提供关键值。没有这样的 property/method 到 return 包含键值的路径。 FullPath
将为您提供带有显示值的路径。您可以使用类似这样的键值递归构建路径:
public string GetKeyPath(TreeNode node)
{
if (node.Parent == null)
{
return node.Name;
}
return GetKeyPath(node.Parent) + "//" + node.Name;
}
因为无论如何我都需要一个数组,所以我想我可以创建一个函数来接收一个 Treenode 和 returns 一个包含键的字符串数组。
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;
}