コード例 #1
0
        /// <summary>
        /// Drag and drop node
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UserFactoryDetails_tv_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                TreeNode sourceNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
                Point    point      = UserFactoryDetails_tv.PointToClient(new Point(e.X, e.Y));
                TreeNode targetNode = UserFactoryDetails_tv.GetNodeAt(point.X, point.Y);

                if (IsTreeNodeMovable(sourceNode, targetNode))
                {
                    sourceNode.Parent.ToolTipText = "Changed";

                    TreeNode dragNode = sourceNode;
                    UserFactoryDetails_tv.Nodes.Remove(sourceNode);
                    if (targetNode.Parent == null)
                    {
                        targetNode.Nodes.Insert(0, dragNode);
                    }
                    else
                    {
                        targetNode.Parent.Nodes.Insert(targetNode.Index + 1, dragNode);
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Enables node dragable
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UserFactoryDetails_tv_DragOver(object sender, DragEventArgs e)
        {
            TreeNode targetNode = null;
            TreeNode sourceNode = null;

            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                Point point = UserFactoryDetails_tv.PointToClient(new Point(e.X, e.Y));
                targetNode = UserFactoryDetails_tv.GetNodeAt(point.X, point.Y);
                sourceNode = e.Data.GetData(typeof(TreeNode)) as TreeNode;
                int delta = UserFactoryDetails_tv.Height - point.Y;
                if ((delta < UserFactoryDetails_tv.Height / 2) && (delta > 0))
                {
                    TreeNode tn = UserFactoryDetails_tv.GetNodeAt(point.X, point.Y);
                    tn.NextVisibleNode?.EnsureVisible();
                }
                if ((delta > UserFactoryDetails_tv.Height / 2) && (delta < UserFactoryDetails_tv.Height))
                {
                    TreeNode tn = UserFactoryDetails_tv.GetNodeAt(point.X, point.Y);
                    tn.PrevVisibleNode?.EnsureVisible();
                }
            }

            if (targetNode != null)
            {
                targetNode.Expand();

                if (IsTreeNodeMovable(sourceNode, targetNode))
                {
                    e.Effect = DragDropEffects.Move;
                }
                else
                {
                    e.Effect = DragDropEffects.None;
                }
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }
コード例 #3
0
 /// <summary>
 /// drags factory nodes
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void UserFactoryDetails_tv_ItemDrag(object sender, ItemDragEventArgs e)
 {
     UserFactoryDetails_tv.DoDragDrop((TreeNode)e.Item, DragDropEffects.All);
 }