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 linhas Const 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 nome Dim 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 encontrado If 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 caminho montaTreeView(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 Twitter
referências:
José Carlos Macoratti