C# 拖放节点在重新启动应用程序后不会更新

C# 拖放节点在重新启动应用程序后不会更新,c#,winforms,treeview,C#,Winforms,Treeview,我正在开发小型WPF应用程序,我已经为TreeView节点实现了拖放功能,但是当我重新启动应用程序时,修改后的拖放节点出现在默认位置,而不是修改后的位置。请帮助我: private void treeView1_ItemDrag(object sender, ItemDragEventArgs e) { // Move the dragged node when the left mouse button is used. if

我正在开发小型WPF应用程序,我已经为TreeView节点实现了拖放功能,但是当我重新启动应用程序时,修改后的拖放节点出现在默认位置,而不是修改后的位置。请帮助我:

private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
        {
            // Move the dragged node when the left mouse button is used. 
            if (e.Button == MouseButtons.Left)
            {
                DoDragDrop(e.Item, DragDropEffects.Move);
            }

            // Copy the dragged node when the right mouse button is used. 
            else if (e.Button == MouseButtons.Right)
            {
                DoDragDrop(e.Item, DragDropEffects.Copy);
            }
        }

    // Set the target drop effect to the effect  
    // specified in the ItemDrag event handler. 
    private void treeView1_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = e.AllowedEffect;
    }

    // Select the node under the mouse pointer to indicate the  
    // expected drop location. 
    private void treeView1_DragOver(object sender, DragEventArgs e)
    {
        // Retrieve the client coordinates of the mouse position.
        Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y));

        // Select the node at the mouse position.
        treeView1.SelectedNode = treeView1.GetNodeAt(targetPoint);
    }

    private void treeView1_DragDrop(object sender, DragEventArgs e)
    {
        // Retrieve the client coordinates of the drop location.
        Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y));

        // Retrieve the node at the drop location.
        TreeNode targetNode = treeView1.GetNodeAt(targetPoint);

        // Retrieve the node that was dragged.
        TreeNode draggedNode = (TreeNode)e.Data.GetData(typeof(TreeNode));

        // Confirm that the node at the drop location is not  
        // the dragged node or a descendant of the dragged node. 
        if (!draggedNode.Equals(targetNode) && !ContainsNode(draggedNode, targetNode))
        {
            // If it is a move operation, remove the node from its current  
            // location and add it to the node at the drop location. 
            if (e.Effect == DragDropEffects.Move)
            {
                //draggedNode.Remove();
               // targetNode.Nodes.Add(draggedNode);
                if (treeView1.CheckBoxes == true)
                {
                    targetNode.Nodes.Add((TreeNode)draggedNode.Clone());
                }
            }

            // If it is a copy operation, clone the dragged node  
             //and add it to the node at the drop location. 
           else if (e.Effect == DragDropEffects.Copy)
            {
                targetNode.Nodes.Add((TreeNode)draggedNode.Clone());
          }

            // Expand the node at the location  
            // to show the dropped node.
            targetNode.Expand();
        }
    }

    // Determine whether one node is a parent  
    // or ancestor of a second node. 
    private bool ContainsNode(TreeNode node1, TreeNode node2)
    {
        // Check the parent node of the second node. 
        if (node2.Parent == null) return false;
        if (node2.Parent.Equals(node1)) return true;

        // If the parent node is not null or equal to the first node,  
        // call the ContainsNode method recursively using the parent of  
        // the second node. 
        return ContainsNode(node1, node2.Parent);
    }

如果你想记住节点的位置,你必须保存和恢复它们。嗨,斯特雷夫,你能为这个提供一些示例代码吗。。。提前感谢使用Google可以找到示例代码:wpf save treeview