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] 폼(Form) 사이즈 고정(Size fix) 20.07.14
- 다음글[vb.net] DataGridView 첫 번째로 표시되는 행 스크롤 인덱스(FirstDisplayedScrollingRowIndex) 20.06.17
댓글목록
등록된 댓글이 없습니다.