Rieccomi a continuare la discussione. Dopo aver letto la guida on-line del controllo treeview ho modificato pesantemente il mio codice e ora sono giunto a questo punto:

codice:
database.apri()
        Dim categorie As String = "SELECT * FROM tblArticoliCategorie WHERE IDNodoPadre = 0 ORDER BY DescrizioneCategoria"
        Dim cmdCategorie As New MySqlCommand(categorie, database.conn)
        Dim CategorieDataReader As MySqlDataReader = cmdCategorie.ExecuteReader
        Dim key As Integer = 0
        While CategorieDataReader.Read
            Dim parentNode As TreeNode = New TreeNode(CategorieDataReader(2))
            Dim SubCategorie As String = "SELECT * FROM tblArticoliCategorie WHERE IDNodoPadre = " & key
            frmGestioneCategorie.trvCategorie.Nodes.Add(parentNode)
            Dim newdb As New clsDatabase
            newdb.apri()
            Dim cmdSubCategorie As New MySqlCommand(SubCategorie, newdb.conn)
            Dim SubCategorieDataReader As MySqlDataReader = cmdSubCategorie.ExecuteReader
            While SubCategorieDataReader.Read
                Dim childNode As TreeNode = New TreeNode(CategorieDataReader(2))
                parentNode.Nodes.Add(childNode)
            End While
            newdb.chiudi()
            key = key + 1
        End While
        database.chiudi()
Però tutt'ora non riesco a generare le sottocategorie con i figli. Mi potete aiutare a capire dove si trova l'errore?