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?发布的答案中有一个能满足您的需要吗?