I'm trying to get a treeview to show all drives on a machine including subfolders. I have accomplished this by looking at examples but have run into a problem with "TreeViewDrives_AfterSelect". If I remove the "If" Statement, the form will load with a message stating the an illegal path has been selected but then everything will work as expected. If I add the "If" statement, the form will execute without error, show all drives but they can't be accessed / will show no nodes etc.

Code:
Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'FIND ALL DRIVES

        Dim DrivesTop As TreeNode = TreeViewDrives.Nodes.Add("(Available Drives)")
        DrivesTop.ImageIndex = 2
        DrivesTop.SelectedImageIndex = 2
        DrivesTop.Tag = ""

        Dim drives As String() = Environment.GetLogicalDrives()
        Dim NUM As Integer = drives.Length

        Dim p As Integer = 0

        While p <> NUM

            Dim Output As String = Convert.ToString(drives(p))

            Dim AvailDrives As TreeNode = DrivesTop.Nodes.Add(Output)
            
            AvailDrives.Tag = Convert.ToString(drives(p))
            AvailDrives.ImageIndex = 1
            AvailDrives.SelectedImageIndex = 1

            p += 1

        End While

    End Sub

    Private Sub AddAllFolders(ByVal TNode As TreeNode, ByVal FolderPath As String)

        Try

            For Each FolderNode As String In Directory.GetDirectories(FolderPath)

                Dim SubFolderNode As TreeNode = TNode.Nodes.Add(FolderNode.Substring(FolderNode.LastIndexOf("\c") + 1))

                SubFolderNode.Tag = FolderNode

                SubFolderNode.Nodes.Add("Loading...")

            Next
        Catch ex As Exception

            MsgBox("The following error occured: " & vbNewLine & vbNewLine & ex.Message)

        End Try
    End Sub

    Private Sub TreeViewDrives_BeforeExpand(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeViewDrives.BeforeExpand

        If e.Node.Nodes.Count = 1 AndAlso e.Node.Nodes(0).Text = "Loading..." Then

            e.Node.Nodes.Clear()
            AddAllFolders(e.Node, CStr(e.Node.Tag))

        End If
    End Sub

    Private Sub TreeViewDrives_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeViewDrives.AfterSelect

        If TreeViewDrives.SelectedNode.Nodes.Count = 1 AndAlso TreeViewDrives.SelectedNode.Nodes(0).Text = "Loading..." Then

            'TreeViewDrives.SelectedNode.Nodes.Clear()

            AddAllFolders(TreeViewDrives.SelectedNode, CStr(TreeViewDrives.SelectedNode.Tag))

        End If


    End Sub

End Class