Controls [vb.net] TreeView Node(체크박스) 체크시 상위, 하위 노드 체크 적용( When checking the Tr…
페이지 정보

본문
    Public NodeChecked As Boolean
    '// 체크박스 체크시 확인란이 선택되기 전
    Private Sub TRV_BeforeCheck(sender As Object, e As TreeViewCancelEventArgs) Handles TreeView1.BeforeCheck
    End Sub
    '// 체크박스 체크시 확인란이 선택된 후
    Private Sub TreeView1_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterCheck
        If NodeChecked Then Exit Sub
        NodeChecked = 1
        Dim Count As Integer = IIf(e.Node.Nodes.Count > 0, 0, 1)
        e.Node.ForeColor = IIf(e.Node.Checked, Color.Red, Color.Blue)
        LOG(NodesChecked(e.Node, e.Node.Checked, Count) & "개의 리스트가 " & Choose((Not e.Node.Checked) + 2, "선택", "해제") & "되었습니다.", 1)
        Dim C As TreeNode = e.Node.Parent
        Do While Not C Is Nothing
            If NodesCheckedCount(C) < 1 Then C.Checked = False Else C.Checked = True
            C = C.Parent
        Loop
        NodeChecked = 0
    End Sub
    '// 체크박스 체크/체크해제(리턴값 Node수량)
    Private Function NodesChecked(N As TreeNode, B As Boolean, Optional Count As Integer = 0) As Integer
        If N.Nodes.Count = 0 Then Return Count
        For i As Integer = 0 To N.Nodes.Count - 1
            Count = NodesChecked(N.Nodes(i), B, Count)
            N.Nodes(i).Checked = B
            N.Nodes(i).ForeColor = IIf(B, Color.Red, Color.Blue)
            If N.Nodes(i).Nodes.Count = 0 Then Count += 1
        Next
        Return Count
    End Function
    Private Function NodesCheckedCount(ByVal TNS As TreeNode) As Integer
        Dim value As Integer
        If TNS.Nodes.Count = 0 Then value += IIf(TNS.Checked, 1, 0)
        If TNS.Nodes.Count = 0 Then Return value
        For Each TN As TreeNode In TNS.Nodes
            If TN.Nodes.Count > 0 Then
                value += NodesCheckedCount(TN)
            Else
                value += IIf(TN.Checked, 1, 0)
            End If
        Next
        Return value
    End Function
- 이전글[vb.net] 네이버 QR Code 단축 URL 생성(https/443) 20.07.02
- 다음글[vb.net] DataGridView 첫 번째로 표시되는 행 스크롤 인덱스(FirstDisplayedScrollingRowIndex) 20.06.17
댓글목록
등록된 댓글이 없습니다.





