Snippet
// The ItemDrag event is called when the item drag begins. Here is
// where you can perform any tracking, or validate if the drag
// operation should occur, and so on.
private void myTree_ItemDrag(object sender, ItemDragEventArgs e)
{
sourceNode = (TreeNode) e.Item;
DoDragDrop(e.Item.ToString(), DragDropEffects.Move | DragDropEffects.Copy);
}
// Define the event that occurs while the dragging happens
private void myTree_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
}
}
// Determine what node in the tree we are dropping on to (target),
// copy the drag source (sourceNode), make the new node and delete
// the old one.
private void myTree_DragDrop(object sender, DragEventArgs e)
{
Point pos = myTree. PointToClient(new Point (e. X, e. Y));
TreeNode targetNode = myTree.GetNodeAt(pos);
TreeNode nodeCopy;
if (targetNode != null)
{
nodeCopy = new TreeNode (sourceNode. Text, sourceNode. ImageIndex, sourceNode. SelectedImageIndex);
if (sourceNode.Index > targetNode.Index)
targetNode.Parent.Nodes.Insert(targetNode.Index, nodeCopy);
else
targetNode.Parent.Nodes.Insert(targetNode.Index + 1, nodeCopy);
sourceNode.Remove();
myTree.Invalidate();
}
}
Copy & Paste
|