Hi swps,
Since in your project, there is only one tree. So you need to change the sample code a little. Also don’t forget to set the AllowDrop property of your TreeView to true. Here is the code.
Code Snippet
partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
treeView1.AllowDrop = true;
treeView1.DragDrop += new DragEventHandler(treeView1_DragDrop);
treeView1.DragEnter += new DragEventHandler(treeView1_DragEnter);
treeView1.ItemDrag += new ItemDragEventHandler(treeView1_ItemDrag);
}
void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
void treeView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
void treeView1_DragDrop(object sender, DragEventArgs e)
{
TreeNode newNode;
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point pt;
TreeNode destinationNode;
pt = treeView1.PointToClient(new Point(e.X, e.Y));
destinationNode = treeView1.GetNodeAt(pt);
newNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
if (!destinationNode.Equals(newNode))
{
//destinationNode.Nodes.Add(newNode.Clone());
destinationNode.Nodes.Add((TreeNode)newNode.Clone());
destinationNode.Expand();
//Remove original node
newNode.Remove();
}
}
}
You can download the whole solution from my SkyDrive TreeNodeDragDrop Sample, it works fine. Hope you can solve your problem from this post.
Sincerely,
Kira Qian |