Clique aqui para ler todos os artigos desta edição
TreeView com C#
por Carlos de Mattos
Este artigo discute |
Este artigo usa as seguintes tecnologias: |
· Preenchimento do TreeView e ListView · Uso de XML no TreeView |
C#, ADO.NET |
Chapéu TreeView |
Download: fontesTreeViewCS.zip (92 KB) |
O Visual Studio.NET trouxe várias novidades para o desenvolvedor de aplicações Windows. O conjunto de controles para os Windows Forms foi melhorado e muitas tarefas tornaram-se mais simples. Contudo, o controle TreeView que já existia nas versões anteriores continua conquistando adeptos para as mais diversas aplicações. Este controle é bastante flexível e permite a exposição de dados de forma hierárquica e ao mesmo tempo flexível. Neste artigo, vou apresentar duas formas diferentes para preencher um controle TreeView. No primeiro exemplo, carregaremos o TreeView com os registros extraídos do SQL Server, depois veremos como carregar o TreeView a partir de um arquivo XML.
Carregando o TreeView através do SQL Server
No primeiro exemplo, trabalharemos com os controles TreeView e ListView em conjunto. Esta combinação é muito utilizada e prática para diversas situações. Neste caso, vamos preencher o TreeView com uma lista dos Clientes da Northwind Traders e os pedidos efetuados por cada um. Os detalhes dos pedidos serão exibidos no ListView que será atualizado sempre que o usuário selecionar um nó do TreeView que contenha um Pedido. Ao completar os passos explicados neste exemplo, a interface deverá apresentar-se semelhante a Figura 1.
Figura 1 - Interface criada com TreeView e ListView
O controle utilizado é o TabControl contendo duas páginas, uma chamada SQL e outra XML, que acomodarão os controles necessários para implementar a interface nos dois exemplos apresentados. Utilize a propriedade TabPages do TabControl para acessar o TabPage Collection Editor e criar as duas páginas, conforme Figura 2. Altere apenas a propriedade Text das páginas para identificá-las, contudo, você encontrará outras propriedades que permitem modificar as características de cada página.
Figura 2 - A propriedade TabPages
Dentro de cada página existe o controle Panel para acomodar o TreeView, o ListView e os demais controles. Na página SQL, utilizamos um controle Spliter para separar os painéis que acomodam o TreeView e o ListView para permitir que o usuário possa ajustar a largura dos painéis de maneira que o conteúdo seja apresentado de forma adequada, como fazemos no Windows Explorer. A propriedade Dock dos controles utilizados foi fundamental para implementação desta interface. O uso de controles Spliter e Panel oferecem uma grande facilidade para implementação de interfaces. O desenvolvedor pode posicionar os Spliters de forma a adequar sua interface às mais diversas necessidades.
A declaração dos Namespaces necessários
Como iremos ler um banco de dados, concatenar strings e ler um XML, os namespaces necessários são: o System.Data.SqlClient para conectar com o banco de dados SQL Server; o System.XML para utilizar o objeto DOM para ler o arquivo XML; o System.Text que permite a utilização dos objetos StringBuilder para concatenar strings e construir as instruções SQL. Os objetos StringBuilder representam a abordagem mais adequada para a construção de strings concatenadas. Muitas vezes o desenvolvedor, levado pelos hábitos das versões anteriores, utiliza o caracter “&” para construir suas strings, porém, essa prática foi superada pelo StringBuilder que oferece uma performance muito melhor. Da mesma forma, gostaria de destacar o uso da propriedade Empty dos objetos strings. Anteriormente, para atribuirmos uma string vazia a uma variável usávamos o operador “=” seguido de duas aspas. Essa prática também deve ser abandonada pelo desenvolvedor que deverá utilizar a sintaxe: MinhaVariavel = string.Empty. Esta é a forma correta e elegante para atribuir strings vazias as variáveis. A Listagem 1 mostra a declaração desses namespaces e o código associado ao botão cmdSQL que será encarregado de obter os registros no SQL Server e preencher o controle TreeView.