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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2223 积分:18276 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]树节点的复选问题  发帖心情 Post By:2015/7/16 12:02:00 [显示全部帖子]

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

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


加好友 发短信
等级:九尾狐 帖子:2223 积分:18276 威望: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编辑过]

 回到顶部