TreeView有checkbox 当父节点选择框选中 子节点将全部选中 代码怎么写的?

Option Explicit

Private Sub Form_Load()
    With TreeView1
        .Nodes.Add , , "Parent1", "Test1"
        .Nodes.Add "Parent1", tvwChild, "Child1", "Test_CH1"
        .Nodes.Add "Parent1", tvwChild, "Child2", "Test_CH2"
        .Nodes.Add "Parent1", tvwChild, "Child3", "Test_CH3"
        .Nodes.Add "Child3", tvwChild, "Child_33", "Test_CH3_CH3"
        .Nodes.Add "Parent1", tvwChild, "Child4", "Test_CH4"
        .Nodes.Add "Parent1", tvwChild, "Parent2", "Test2"
        .Nodes.Add "Parent2", tvwChild, "Child11", "Test_CH1"
        .Nodes.Add "Parent2", tvwChild, "Child22", "Test_CH2"
        .Nodes.Add "Parent2", tvwChild, "Child33", "Test_CH3"
        .Nodes.Add "Parent2", tvwChild, "Child44", "Test_CH4"
        .Checkboxes = True
        .LineStyle = tvwTreeLines
    End With
    NodeAllExpanded TreeView1
End Sub


Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
    Call AllChildSynchro(Node)
    Call AllMaterSynchro(Node)
End Sub


'// -选中下级-
Private Sub AllChildSynchro(ByVal NodeChoose As Object)
    On Error Resume Next
    Dim lNextLoop As Long
    Dim ObjChildren As Object
    If CBool(NodeChoose.Children > 0) Then
        Set ObjChildren = NodeChoose.Child
        For lNextLoop = 1 To NodeChoose.Children
            ObjChildren.Checked = NodeChoose.Checked
            If ObjChildren.Children > 0 Then Call AllChildSynchro(ObjChildren)
            Set ObjChildren = ObjChildren.Next
        Next lNextLoop
    End If
End Sub

'// -取消上级-
Private Sub AllMaterSynchro(ByVal NodeChoose As Object)
    On Error Resume Next
    If Not NodeChoose.Checked Then If TypeName(NodeChoose.Parent) = "INode" Then NodeChoose.Parent.Checked = False
    If Not NodeChoose.Checked Then If TypeName(NodeChoose.Parent) = "INode" Then Call AllMaterSynchro(NodeChoose.Parent)
End Sub

'// -节点张开-
Private Sub NodeAllExpanded(ByVal ObjTvw As Object)
    On Error Resume Next
    Dim ObjChild As Object
    For Each ObjChild In ObjTvw.Nodes
        ObjChild.Expanded = IIf(ObjChild.Key = ObjChild.Root.Key, False, True)
        ObjChild.Root.Expanded = IIf(ObjChild.Key = ObjTvw.Nodes(ObjTvw.Nodes.Count).Key, True, False)
    Next ObjChild
End Sub 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值