Foxtable(狐表)用户栏目专家坐堂 → [求助]树节点的复选问题


  共有2323人关注过本帖树形打印复制链接

主题:[求助]树节点的复选问题

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2202 积分:18124 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]树节点的复选问题  发帖心情 Post By:2015/7/16 12:02:00 [只看该作者]

现在的方法可以做下级节点与上级节点复选状态一致,但如何做到只要任何一个下级节点没勾选,它的所有直系上级节点不勾选,当父节点的所有下级节点勾选后,它自动勾选?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/16 12:03:00 [只看该作者]

 目录树全选代码

 


Dim nd,nd1 As  WinForm.TreeNode
nd = e.node
If nd.Nodes.Count > 0
    For Each nd1 In nd.AllNodes
        nd1.Checked = nd.Checked
    Next
End If
If e.node.Checked = False
    Do While  nd.parentnode IsNot Nothing
        nd = nd.parentnode
        If nd.Nodes.Count > 0
            For i As Integer = 0 To nd.Nodes.Count -1
                If nd.Nodes(i).Checked = True
                    Exit Do
                End If
                If i = nd.Nodes.Count -1
                    nd.Checked = False
                End If
            Next
        End If
    Loop
Else
    Do While  nd.parentnode IsNot Nothing
        nd = nd.parentnode
        nd.Checked = True
    Loop
End If


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2202 积分:18124 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2015/7/16 12:45:00 [只看该作者]

用了一个自认为简单的逻辑来实现它了,感谢袍兄
'----这是选择了父节点,则所有子节点选中
For Each nd As WinForm.TreeNode In e.Node.AllNodes
    nd.Checked  = e.Node.Checked
Next
‘----当子节点的选择状态发生变化时,父节点的变化情况’
For Each nd As WinForm.TreeNode In e.Sender.AllNodes  ‘遍历所有节点’
     if nd.nodes.count > 0 then 
    For Each cnd As WinForm.TreeNode In nd.AllNodes
        If cnd.Nodes.Count = 0 Then   ‘这是用来判断末级节点的选中状态,非末级节点不用理会’
            If cnd.Checked = False Then  ‘如果末级节点有任何一个未选中,则该节点不被选中’
                nd.Checked = False
                Exit For
            Else
                nd.Checked = True  ‘如果末级节点选中,则再找下一个末级节点的选择状态’
            End If
        End If
    Next
end if 
Next


[此贴子已经被作者于2015/7/16 12:48:05编辑过]

 回到顶部