以文本方式查看主题

-  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
--  [求助]能否限制目录树新建节点

老师好!

如下图,我拖拽改变二级目录树节点的顺序,一不小心就拖拽产生一个新的一级节点。

能不能限制根节点只能存在一个节点?

 


图片点击可在新窗口打开查看此主题相关图片如下:201910271711794223.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间: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

下面是我改了一下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树拖拽测试.foxdb




--  作者:有点蓝
--  发布时间: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