c#树视图路径

c#树视图路径,c#,treeview,C#,Treeview,我有树节点 something = treeview.Nodes[1].Nodes[4].Nodes[0]; TreeNode myNode = something; 并希望知道它有多少父节点,以及我需要使用哪些索引来查找从该节点导出的整个路径 我的意思是从myNode中获取“treeview.Nodes[1].Nodes[4].Nodes[0]”类似这样的操作应该可以: public IList<int> GetNodePathIndexes(TreeNode node) {

我有树节点

something = treeview.Nodes[1].Nodes[4].Nodes[0]; 

TreeNode myNode = something;
并希望知道它有多少父节点,以及我需要使用哪些索引来查找从该节点导出的整个路径


我的意思是从myNode中获取“treeview.Nodes[1].Nodes[4].Nodes[0]”类似这样的操作应该可以:

public IList<int> GetNodePathIndexes(TreeNode node)
{
    List<int> indexes = new List<int>();
    TreeNode currentNode = node;
    while (currentNode != null)
    {
        TreeNode parentNode = currentNode.Parent;
        if (parentNode != null)
            indexes.Add(parentNode.Nodes.IndexOf(currentNode));
        else
            indexes.Add(currentNode.TreeView.Nodes.IndexOf(currentNode));

        currentNode = parentNode;
    }
    indexes.Reverse();
    return indexes;
}
public IList GetNodePathindex(TreeNode节点)
{
列表索引=新列表();
TreeNode currentNode=节点;
while(currentNode!=null)
{
TreeNode parentNode=currentNode.Parent;
if(parentNode!=null)
Add(parentNode.Nodes.IndexOf(currentNode));
其他的
Add(currentNode.TreeView.Nodes.IndexOf(currentNode));
currentNode=parentNode;
}
index.Reverse();
收益指标;
}
然后,您可以查看结果以获得索引和计数,从而获得父级的数量

IList<int> path = GetNodePathIndexes(myNode);

StringBuilder fullPath = new StringBuilder("treeview");
foreach (int index in path)
{
    fullPath.AppendFormat(".Nodes[{0}]", index);
}
IList path=GetNodePathIndexes(myNode);
StringBuilder fullPath=新StringBuilder(“treeview”);
foreach(路径中的int索引)
{
AppendFormat(“.Nodes[{0}]”,索引);
}
然后
fullPath.ToString()
应该返回
treeview.Nodes[1]。Nodes[4]。Nodes[0]

/。。。
//...
string path = GetPath(treeView1.Nodes[0].Nodes[0].Nodes[1].Nodes[0]);
// now path is "treeView.Nodes[0].Nodes[0].Nodes[1].Nodes[0]"
//...
string GetPath(TreeNode node) {
    int index;
    Stack<string> stack = new Stack<string>();
    while(node != null) {
        if(node.Parent != null) {
            index = node.Parent.Nodes.IndexOf(node);
            stack.Push(string.Format("Nodes[{0}]", index));
        }
        else {
            index = node.TreeView.Nodes.IndexOf(node);
            stack.Push(string.Format("treeView.Nodes[{0}]", index));
        }
        node = node.Parent;
    }
    return string.Join(".", stack.ToArray());
}
string path=GetPath(treeView1.Nodes[0]。Nodes[0]。Nodes[1]。Nodes[0]); //现在路径是“treeView.Nodes[0]。Nodes[0]。Nodes[1]。Nodes[0]” //... 字符串GetPath(树节点){ 整数指数; 堆栈=新堆栈(); while(节点!=null){ 如果(node.Parent!=null){ index=node.Parent.Nodes.IndexOf(节点); Push(string.Format(“Nodes[{0}]”,index)); } 否则{ index=node.TreeView.Nodes.IndexOf(node); Push(string.Format(“treeView.Nodes[{0}]”,index)); } node=node.Parent; } 返回字符串.Join(“.”,stack.ToArray()); }
您能再解释一下吗?也许是个更好的例子?你现在明白我的意思了吗?你在用什么?WinForms?发布的答案中有一个能满足您的需要吗?