title: Drag and Drop Nodes are not updated after Relaunch aplication
body: <p>I am working on small WPF application, i have implemented for Treeveiw nodes drag and drop function, but when i Relaunch the applicaion, Modified Dropped nodes are present at Default location, instead of Modified location. Please help me:</p>
  
  <pre><code>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) &amp;&amp; !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);
      }
  </code></pre>