private void tvTree_DragDrop(object sender, DragEventArgs e)
        {
            TreeNode sourceNode;
            TreeNode destinationNode;
            bool     result;

            // Get the tree.
            TreeView tree = (TreeView)sender;

            // Get the screen point.
            Point pt = new Point(e.X, e.Y);

            // Convert to a point in the TreeView's coordinate system.
            pt = tree.PointToClient(pt);

            // Get the node underneath the mouse.
            destinationNode = tree.GetNodeAt(pt);
            sourceNode      = (TreeNode)e.Data.GetData(typeof(TreeNode));

            result = templatesMenager.Copy(sourceNode, destinationNode);

            if (result == true)
            {
                // Add a child node.
                destinationNode.Nodes.Add((TreeNode)sourceNode.Clone());

                // Show the newly added node if it is not already visible.
                destinationNode.Expand();
                tvTree.Nodes.Remove(sourceNode);
                templatesMenager.LoadAll();
            }
        }