Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改树节点的顺序_C# - Fatal编程技术网

C# 如何更改树节点的顺序

C# 如何更改树节点的顺序,c#,C#,我想更改同一级别上System.Windows.Forms.TreeNodes的顺序 关于如何在.net-2.0中实现这一点的任何建议。您需要操作TreeView的节点集合。看 如果您有三个树节点,并且希望将最后一个移动到前面,例如:(注意:未测试代码,但显示了想法) 这就是我写的: public void MoveNode(TreeView tv, TreeNode node, bool up) { if ((node.PrevNode == null) &a

我想更改同一级别上System.Windows.Forms.TreeNodes的顺序


关于如何在.net-2.0中实现这一点的任何建议。

您需要操作TreeView的节点集合。看

如果您有三个树节点,并且希望将最后一个移动到前面,例如:(注意:未测试代码,但显示了想法)


这就是我写的:

    public void MoveNode(TreeView tv, TreeNode node, bool up)
    {

        if ((node.PrevNode == null) && up) {
            return;
        }

        if ((node.NextNode == null) && !up) {
            return; 
        }

        int newIndex = up ? node.Index - 1 : node.Index + 1;

        var nodes = tv.Nodes; 
        if (node.Parent != null) {
            nodes = node.Parent.Nodes;
        }

        nodes.Remove(node);
        nodes.Insert(newIndex, node); 

    }

我写的这段代码不需要任何克隆

在我的例子中,它在同级节点中向上移动一个位置,但可以进行调整

        TreeNode selectedNode = treeViewChain.SelectedNode;
        if (selectedNode != null && selectedNode.Index > 0)
        {
            TreeNode parent = selectedNode.Parent;
            int selectedIndex = selectedNode.Index;
            selectedNode.Remove();
            parent.Nodes.Insert(selectedIndex - 1, selectedNode);
            treeViewChain.SelectedNode = selectedNode;
        }

为什么要克隆节点?Remove不应处理它,因此引用仍然有效。@jmcarty-修复了它
    public void MoveNode(TreeView tv, TreeNode node, bool up)
    {

        if ((node.PrevNode == null) && up) {
            return;
        }

        if ((node.NextNode == null) && !up) {
            return; 
        }

        int newIndex = up ? node.Index - 1 : node.Index + 1;

        var nodes = tv.Nodes; 
        if (node.Parent != null) {
            nodes = node.Parent.Nodes;
        }

        nodes.Remove(node);
        nodes.Insert(newIndex, node); 

    }
        TreeNode selectedNode = treeViewChain.SelectedNode;
        if (selectedNode != null && selectedNode.Index > 0)
        {
            TreeNode parent = selectedNode.Parent;
            int selectedIndex = selectedNode.Index;
            selectedNode.Remove();
            parent.Nodes.Insert(selectedIndex - 1, selectedNode);
            treeViewChain.SelectedNode = selectedNode;
        }