 VB .NET  - Carregando um TreeView com um 
arquivo CSV
 
VB .NET  - Carregando um TreeView com um 
arquivo CSV
|  | Hoje veremos como funciona e como usar o Logging da ASP .NET Core |  | 
Em diversos artigos do site eu já abordei o controle TreeView. Se você pretende saber mais sobre este controle veja a relação abaixo:
O controle TreeView exibe uma coleção de itens maneira hierárquica como o Explorer do Windows: Dependendo do seu projeto pode ser interessante usar os recursos deste controle.
O controle TreeView faz parte da seguinte hierarquia de classes:

Algumas características básicas do TreeView:
Cada Item em um TreeView esta encapsulado dentro de um objeto TreeNode.
Cada TreeNode pode ter zero , um ou muitos nós filhos.
A propriedade Nodes do treeview representa a coleção de objetos TreeNode que se relacionam com o nó raiz ou o nó superior na hierarquia.
Cada Nó possui sua própria coleção Nodes que contém todos os Nós filhos
Você pode interagir via código através de cada uma destas coleções
Você pode selecionar somente um único Nó por vez
Você pode selecionar um Nó clicando nele com o mouse ou usando o teclado.
Para selecionar um Nó via código definimos a propriedade TreeView.SelectedNode e o Nó atualmente selecionado pode ser obtido pelo valor desta mesma propriedade
Use a propriedade FullPath do Nó selecionado para determinar a hierarquia completa para o Nó.
Novidades no VB .NET versão 2005
No VB 2005 houve pequenas mudanças no controle TreeView. A seguir algumas delas:
Tentando trazer algo que eu ainda não mostrei neste artigo vou abordar como você pode carregar um controle TreeView com o conteúdo do arquivo CSV.
O que é um arquivo CSV
Um arquivo CSV (Comma Separted Value) é um formato de arquivo que é frequentemente usado para troca de dados entre aplicações diferentes. O arquivo no formato CSV possui os dados delimitados onde os campos são separados pelo caractere vírgula e registros separados por uma nova linha. Este formato de arquivo é usado no Microsoft Excel ,e tornou-se um pseudo padrão para a indústria mesmo entre plataformas não Microsoft.
Embora não exista uma especificação formal para o formato CSV, a RFC 4180 descreve um formato comum e estabelece o tipo MIME "text/csv" .
Para o propósito deste artigo eu vou criar um arquivo no formato CSV usando o Excel.
O arquivo teste.csv possui os seguintes dados:
|  | 
Abra o Visual Basic Express e crie um novo projeto chamado treeViewVB2005 e no formulário padrão inclua um controle TreeView , um controle Button , um controle Label e um controle TextBox conforme leiauto abaixo:
|  | Nome usado para os controles: 
 Propriedades do controle TreeView: 
 
 | 
Copie o arquivo teste.csv para a pasta bin do projeto.
No evento Click do botão de comando inclua o seguinte código:
| Private Sub btnTrv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTrv.Click         'define o nome do caminho e o nome do arquivo
        Dim nome_arquivo As String = Application.StartupPath        'inclui o nome do arquivo ao caminho
        nome_arquivo = nome_arquivo.Substring(0, nome_arquivo.LastIndexOf("\")) & "\" & txtArqCSV.Text        Try
          'chama a rotina para carregar o treeview
           carregaTreeView(nome_arquivo, trvItems)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub | 
A rotina carregaTreeView que abre o arquivo CSV e chama a rotina montaTreeView para carregar o conteúdo do arquivo no controle:
| ' Carrega o treeview a partir de um arquivo CSV Private Sub carregaTreeView(ByVal nome_arquivo As String, ByVal trv As TreeView) Dim leitor_stream As StreamReader Dim arquivo_conteudo As String = "" Try ' carrega o arquivo CSV leitor_stream = New StreamReader(nome_arquivo) arquivo_conteudo = leitor_stream.ReadToEnd() leitor_stream.Close() Catch ex As FileNotFoundException             Throw New Exception("arquivo CSV não localizado.")Catch ex1 As Exception             Throw New Exception("Erro ao abrir/ler o arquivo CSV.")        End Try
        ' quebra o arquivo em linhasConst charCR As Char = CChar(vbCr)         Dim linhas() As String = arquivo_conteudo.Split(charCR)
        ' Processa as linhas.trv.Nodes.Clear() Dim novos_campos() As String For i As Integer = 0 To linhas.GetUpperBound(0) ' Verifica se a linha não esta em branco If linhas(i).TrimStart.Length > 0 Then ' quebra a linha em campos                 novos_campos = linhas(i).Trim.Split(","c)' cria a entrada no treeview montaTreeView(trv.Nodes, novos_campos, 0) End If Next i End Sub | 
A rotina montaTreeView recebe os dados do arquivo e monta o TreeView com os dados:
| ' Monta o treeview usando o CSV Private Sub montaTreeView(ByVal no_pai As TreeNodeCollection, ByVal fields() As String, ByVal campo_num As Integer) 
        ' sai se todos os campos foram usados        If campo_num > fields.GetUpperBound(0) Then Exit Sub
        ' Procura o por um no filho com um campo com este nomeDim achou_campo As Boolean 'percorre cada nó filho no nó Pai For Each child_node As TreeNode In no_pai If child_node.Text = fields(campo_num) Then ' Se encontrar então monta montaTreeView(child_node.Nodes, fields, campo_num + 1) achou_campo = True End If         Next child_node
        ' Verifica se o campo foi encontradoIf Not achou_campo Then ' O campo não foi encontrado vamos criar um Dim new_node As TreeNode = no_pai.Add(fields(campo_num))             new_node.EnsureVisible()
            ' cria o resto do caminhomontaTreeView(new_node.Nodes, fields, campo_num + 1) End If End Sub | 
Ao executar o projeto usando o arquivo teste.csv obtemos o seguinte resultado:
|  | 
Eu sei é 
apenas VB.NET mas eu gosto...
| Veja os  
	
    Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique 
	e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? | 
  
    Gostou ?   Compartilhe no Facebook
 Compartilhe no Facebook 
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
  
  
referências:
José Carlos Macoratti