C# 向后移动树视图

C# 向后移动树视图,c#,treeview,C#,Treeview,我希望向后移动-让我们说我在“背景”节点。然后,我想动议: ->backgrounds ->component 6 ->components ->assembly 3 ->component 5 ->component 4 ->components ->assembly 2 ->component 3 ... 有人能帮我吗 因为我的评论很有帮助,所以我发布了这个答案 您需要的是后序中最右边的遍历。您可以这样递归地执行此操作: publi

我希望向后移动-让我们说我在“背景”节点。然后,我想动议:

->backgrounds
->component 6
->components
->assembly 3
->component 5
->component 4
->components
->assembly 2
->component 3
 ... 

有人能帮我吗

因为我的评论很有帮助,所以我发布了这个答案

您需要的是后序中最右边的遍历。您可以这样递归地执行此操作:

public void traverse(TreeNode t)
{
    for (int i = t.Nodes.Count-1; i >= 0; i--)
    {
        traverse(t.Nodes[i]);
    }
    /*Do something*/
}

您可以在此处阅读有关树遍历方法的更多信息:

这是一个内置功能,您可以使用TreeNode.PrevVisibleNode属性。像这样:

    private void MoveUp_Click(object sender, EventArgs e) {
        var node = treeView1.SelectedNode;
        if (node != null && node.PrevVisibleNode != null) 
            treeView1.SelectedNode = node.PrevVisibleNode;
        treeView1.Focus();
    }

您想导航到树中的最后一个节点(环绕),还是想将节点移动到末尾?我想检查每个节点“背景词”的一些值,如筛选。啊,所以您想根据图片,从“背景”转到“组件6”?是的。从每个树视图的“底部”开始检查每个节点。如果我没有弄错的话,您想要的是所谓的后序最右侧遍历。您可以在这里阅读有关树遍历的内容:我还有一个额外的问题。我想检查树视图的每个节点是否满足某些条件。如果我想从treeview中的一个节点启动它,但要检查所有“以上”节点的条件(如在第一篇文章中,启动节点是“背景”),我应该怎么做@santBart最简单的解决方法是什么都不做,直到你到达你想要开始的节点。否则你必须以某种方式改变算法,从你想要的节点开始,然后找出下一个要访问的节点,并重复这个过程,直到你完成为止。我不完全确定你如何才能有效地完成。只有当所有节点我不能确定用户是否会这样做。