Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6532101
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T09:57:32+00:00 2026-05-25T09:57:32+00:00

I have a 3 layer treeview and is using the code below. I am

  • 0

I have a 3 layer treeview and is using the code below. I am getting it to do the following,

1) If parent is checked, check all child nodes.

2) If just one child node is unchecked, uncheck parent node.

3) If all child nodes are checked, check parent node.

Code below only works for 2 layers. Would appreciate if you can guide me how to make it three. There are much information on treeview but most of them seems irrelevant =/ Will be great if you can show me a good guide on treeview control. Thank you!

Private Sub TreeView1_AfterCheck(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterCheck
    RemoveHandler TreeView1.AfterCheck, AddressOf TreeView1_AfterCheck

    For Each node As TreeNode In e.Node.Nodes
        node.Checked = e.Node.Checked
    Next

    If e.Node.Checked Then
        If e.Node.Parent Is Nothing = False Then
            Dim allChecked As Boolean = True

            For Each node As TreeNode In e.Node.Parent.Nodes
                If Not node.Checked Then
                    allChecked = False
                End If
            Next

            If allChecked Then
                e.Node.Parent.Checked = True
            End If

        End If
    Else
        If e.Node.Parent Is Nothing = False Then
            e.Node.Parent.Checked = False
        End If
    End If

    AddHandler TreeView1.AfterCheck, AddressOf TreeView1_AfterCheck
End Sub
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T09:57:33+00:00Added an answer on May 25, 2026 at 9:57 am

    Working example using recursion:

    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        For i As Integer = 1 To 3
          Dim node As New TreeNode("Parent #" & i.ToString)
          node.Nodes.Add("Child #1")
          node.Nodes.Add("Child #2")
    
          Dim childNode As New TreeNode("Child #3")
          childNode.Nodes.Add("Grand Child #1")
          childNode.Nodes.Add("Grand Child #2")
    
          Dim grandNode As New TreeNode("Grand Child #3")
          grandNode.Nodes.Add("Great Grand Child #1")
          grandNode.Nodes.Add("Great Grand Child #2")
          childNode.Nodes.Add(grandNode)
          node.Nodes.Add(childNode)
    
          grandNode.Expand()
          childNode.Expand()
          node.Expand()
    
          TreeView1.Nodes.Add(node)
        Next
      End Sub
    
      Private Sub TreeView1_AfterCheck(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterCheck
        RemoveHandler TreeView1.AfterCheck, AddressOf TreeView1_AfterCheck
    
        Call CheckAllChildNodes(e.Node)
    
        If e.Node.Checked Then
          If e.Node.Parent Is Nothing = False Then
            Dim allChecked As Boolean = True
            Call IsEveryChildChecked(e.Node.Parent, allChecked)
            If allChecked Then
              e.Node.Parent.Checked = True
              Call ShouldParentsBeChecked(e.Node.Parent)
            End If
          End If
        Else
          Dim parentNode As TreeNode = e.Node.Parent
          While parentNode Is Nothing = False
            parentNode.Checked = False
            parentNode = parentNode.Parent
          End While
        End If
    
        AddHandler TreeView1.AfterCheck, AddressOf TreeView1_AfterCheck
      End Sub
    
      Private Sub CheckAllChildNodes(ByVal parentNode As TreeNode)
        For Each childNode As TreeNode In parentNode.Nodes
          childNode.Checked = parentNode.Checked
          CheckAllChildNodes(childNode)
        Next
      End Sub
    
      Private Sub IsEveryChildChecked(ByVal parentNode As TreeNode, ByRef checkValue As Boolean)
        For Each node As TreeNode In parentNode.Nodes
          Call IsEveryChildChecked(node, checkValue)
          If Not node.Checked Then
            checkValue = False
          End If
        Next
      End Sub
    
      Private Sub ShouldParentsBeChecked(ByVal startNode As TreeNode)
        If startNode.Parent Is Nothing = False Then
          Dim allChecked As Boolean = True
          Call IsEveryChildChecked(startNode.Parent, allChecked)
          If allChecked Then
            startNode.Parent.Checked = True
            Call ShouldParentsBeChecked(startNode.Parent)
          End If
        End If
      End Sub
    
    End Class
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a project with a formidable data access layer using LinqtoSQL for just
I have just branched our Common Business Layer projects from the main to a
Hi all i have main form with a treeview control with a set of
I have a TreeView with user-editable nodes. I like to use the node caption
I'm trying to have a new layer appear above existing content on my site
I am trying to have one one layer, and center images within. I.E., if
As part of a system I am working on we have put a layer
We have a DLL used as the middle layer between our website front end
I have a sublayer on a layer-backed view. The sublayer's contents are set to
I have a method in my business logic layer that accepts a stream, which

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.