以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]目录树节点单选,有实用意义【代码在8楼,10楼】  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=26554)

--  作者:hanxuntx
--  发布时间:2012/12/7 21:27:00
--  [求助]目录树节点单选,有实用意义【代码在8楼,10楼】


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

如图:

要求:【3】【4】复选框选中后,则【2】选中,然后【3】【4】去掉选中

也就是 父节点选中,则子节点全部不选中

         子节点选中,则父节点选中,然后子节点不选中

【注意】如果3.4.5.6选中,那么【1】选中,然后3.4.5.6去掉选中状态

 似乎要写个递归?我写了一下老是死循环。高手请出手 


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.foxdb

[此贴子已经被作者于2012-12-8 15:58:08编辑过]

--  作者:程兴刚
--  发布时间:2012/12/7 21:44:00
--  

我又现成的通用代码:

 

Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
For Each nd As WinForm.TreeNode In e.node.Nodes \'同步子节点选中状态
    nd.Checked = e.Node.Checked
    For Each nd1 As WinForm.TreeNode In nd.Nodes \'同步子节点选中状态
        nd1.Checked =  nd.Checked
        For Each nd2 As WinForm.TreeNode In nd1.Nodes \'同步子节点选中状态
            nd2.Checked =  nd1.Checked
        Next
    Next
Next
If e.node.ParentNode IsNot Nothing Then \'去掉父节点选中状态
    e.node.ParentNode.Checked = False
    If e.node.ParentNode.ParentNode IsNot Nothing Then \'去掉父节点选中状态
        e.node.ParentNode.ParentNode.Checked = False
        If e.node.ParentNode.ParentNode.ParentNode IsNot Nothing Then \'去掉父节点选中状态
            e.node.ParentNode.ParentNode.ParentNode.Checked = False
        End If
    End If
End If

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8(1).foxdb


--  作者:hanxuntx
--  发布时间:2012/12/7 21:58:00
--  

谢谢程版,好像没有达到要求

 


--  作者:程兴刚
--  发布时间:2012/12/7 22:56:00
--  

没注意您的要求,您的要求本身就会导致死循环!


--  作者:lin_hailun
--  发布时间:2012/12/8 9:59:00
--  
 之前写过一个简单的。但和你的相反。你可以参考下。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:树节点与子节点同步变化.table





--  作者:hanxuntx
--  发布时间:2012/12/8 13:01:00
--  

你写出来肯定是精华图片点击可在新窗口打开查看

 

另外 程版 这个需要还是有的。也是合理的


--  作者:lin_hailun
--  发布时间:2012/12/8 15:03:00
--  
 大概是这样子,看是否合适。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.foxdb


--  作者:hanxuntx
--  发布时间:2012/12/8 15:40:00
--  

谢谢 正是我要的。


--  作者:hanxuntx
--  发布时间:2012/12/8 15:56:00
--  

林总 我补了一点点代码 这样完美了

Dim node As WinForm.TreeNode = e.Node
If node.Checked Then
    Do While node.Level > 0
        node.ParentNode.Checked = False
        node = node.ParentNode
    Loop
End If
Functions.Execute("checkLoop", e.Node)