msdn15_capa.jpg

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.

 

image002.jpg

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.

 

image004.jpg

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. ...

Quer ler esse conteúdo completo? Tenha acesso completo