• winform 两个TreeView间拖拽节点


            /// <summary>
            /// 正在拖拽的节点
            /// </summary>
            private TreeNode DragNode = null;
            /// <summary>
            /// 节点来源
            /// </summary>
            private TreeView NodeSource = null;
            /// <summary>
            /// 树形节点移动方向
            /// </summary>
            private MoveTreeView MoveTo = MoveTreeView.NoMove;
    
            /// <summary>
            /// 当鼠标拖拽某相进入控件区域内时
            /// </summary>
            private void TreeView_DragEnter(object sender, DragEventArgs e)
            {
                e.Effect = DragDropEffects.Move;
            }
    
            /// <summary>
            /// 当鼠标拖拽某节点时(两个控件的该事件都指向这个方法)
            /// </summary>
            private void TreeView_ItemDrag(object sender, ItemDragEventArgs e)
            {
                if (e.Item is TreeNode && e.Button == System.Windows.Forms.MouseButtons.Left &&
                    e.Item != null && sender is TreeView)
                {
                    TreeView trv = sender as TreeView;
                    TreeNode node = e.Item as TreeNode;
                    if (node.Parent != null && trv.Tag != null)
                    {
                        int value = Convert.ToInt32(trv.Tag);
                        MoveTo = (MoveTreeView)value;
                        DragNode = node;
                        NodeSource = trv;
                        trv.DoDragDrop(node, DragDropEffects.Move);
                    }
                }
            }
    
            /// <summary>
            /// 拖拽完成时发生的事件(两个控件的该事件都指向这个方法)
            /// </summary>
            private void TreeView_DragDrop(object sender, DragEventArgs e)
            {
                if (sender != null && sender is TreeView)
                {
                    TreeView trv = sender as TreeView;
                    if (trv.Tag != null)
                    {
                        MoveTreeView move = (MoveTreeView)Convert.ToInt32(trv.Tag);
                        if (move == MoveTo) { DragNode = null; NodeSource = null; }
                        else
                        {
                            Point p = trv.PointToClient(new Point(e.X, e.Y));
                            TreeNode node = trv.GetNodeAt(p);
                            string path = GetClientPath(DragNode, DragNode.Text);
                            NodeSource.Nodes.Remove(DragNode);
                            node.Nodes.Add(DragNode);
                        }
                    }
                }
            }
    
            /// <summary>
            /// 属性节点移动方向
            /// </summary>
            public enum MoveTreeView
            {
                /// <summary>
                /// 未移动
                /// </summary>
                NoMove = -1,
                /// <summary>
                /// 上传(客户端拖拽到服务器端)
                /// </summary>
                ClientToServer = 0,
                /// <summary>
                /// 下载(服务器端拖拽到客户端)
                /// </summary>
                ServerToClient = 1
            }

    首先要将 TreeView 控件的 AllowDrop 属性置为 True

  • 相关阅读:
    mysql drop table & myisam
    python 发送 html email
    python mysqldb 查询返回字典结构
    shell 脚本 连接数据库
    python 中使用map 构建sql查询语句
    C#启动一个外部程序(1)WinExec
    知道在那里划这一条线吗[zt]
    C#启动一个外部程序(2)ShellExecute
    把FlashCom 帮助安装到Flash 8 中文版
    C#读写ini文件
  • 原文地址:https://www.cnblogs.com/rogation/p/3362920.html
Copyright © 2020-2023  润新知