以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]能否限制目录树新建节点 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=142481) |
||||
-- 作者:天一生水 -- 发布时间:2019/10/28 17:00:00 -- [求助]能否限制目录树新建节点 老师好! 如下图,我拖拽改变二级目录树节点的顺序,一不小心就拖拽产生一个新的一级节点。 能不能限制根节点只能存在一个节点?
![]() ![]() |
||||
-- 作者:有点蓝 -- 发布时间:2019/10/28 17:04:00 -- 拖拽怎么做的? |
||||
-- 作者:天一生水 -- 发布时间:2019/10/28 19:11:00 -- 逛逛老师的原贴:目录树内节点拖拽的练习 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=39670&replyID=247106&skin=1
下面是我改了一下:
|
||||
-- 作者:有点蓝 -- 发布时间:2019/10/28 20:22:00 -- trDragDrop函数 Dim sender As System.object = Args(0) Dim e As System.Windows.Forms.DragEventArgs = Args(1) If Vars("来源树") = "" Then Exit Function End If If Vars("去向树") = "" Then Exit Function End If Dim myTree_in As WinForm.TreeView = Forms("窗口").Controls(Vars("来源树")) \'定义来源目录树 Dim myTree_out As WinForm.TreeView = Forms("窗口").Controls(Vars("去向树")) \'定义去向目录树 Dim vbTree_in As System.Windows.Forms.TreeView = myTree_in.BaseControl \'取后台对象 Dim vbTree_out As System.Windows.Forms.TreeView = myTree_out.BaseControl \'取后台对象 Dim NodData As WinForm.TreeNode = e.Data.GetData("Foxtable.WinForm.TreeNode") \'取数据 If myTree_in.SelectedNode Is Nothing Then Exit Function End If Dim vbNod As System.Windows.Forms.TreeNode = vbTree_in.SelectedNode \'没办法,只能绕弯走 Dim NewvbNod As System.Windows.Forms.TreeNode = vbNod.Clone() \'添加下级节点 Dim pt = sender.PointToClient(new Point(e.X, e.Y)) \'取当前坐标 Dim NodNet As System.Windows.Forms.TreeNode = vbTree_out.GetNodeAt(pt) \'取坐标所在位置的节点 If NodNet Is Nothing Then \'vbTree_out.nodes.Add(NewvbNod) Else If NodNet.Level = 0 Then \'vbTree_out.nodes.Add(NewvbNod) Else If NodNet.Parent.name = NodData.name Then Exit Function Else \'同级移动 NodNet.Parent.Nodes.Insert(NodNet.Index, NewvbNod) \'添加到下级 \'NodNet.Nodes.Insert(NodNet.nodes.count, NewvbNod) myTree_in.Nodes.Remove(NodData) vbTree_out.SelectedNode = NewvbNod End If |