Microsoft Communities

Welcome to WindowsClient.net | Sign in | Join

Here are some frequently asked questions about Windows Forms and their answers.

Windows Forms FAQs

How do I support drag and drop between two TreeView controls?

Here are some VB.Net code snippets to handle the DragEnter, ItemDrag and DragDrop events that provide a solution to this problem. You can get C# code in this sample, TreeViewDnD. Here is some sample handlers.

private void treeView2_DragDrop( object sender, DragEventArgs e )
{
  if ( e.Data.GetDataPresent( "System.Windows.Forms.TreeNode", false ) )
  {
    Point pt = treeView2.PointToClient( new Point( e.X, e.Y ) );
    TreeNode destinationNode = treeView2.GetNodeAt( pt );
    TreeNode newNode =
      (TreeNode) e.Data.GetData( "System.Windows.Forms.TreeNode" );
    if( !destinationNode.Equals( newNode ) )
    {
      destinationNode.Nodes.Add( (TreeNode) newNode.Clone() );
      destinationNode.Expand();
      newNode.Remove();
    }
  }
}

private void treeView2_DragEnter( object sender, DragEventArgs e )
{
  e.Effect = DragDropEffects.Move;
}

private void treeView2_ItemDrag(object sender, ItemDragEventArgs e )
{
  DoDragDrop( e.Item, DragDropEffects.Move );
}

Brian Roder, Microsoft



Page view counter