Em computação, um tree view (literalmente do inglês vista de árvore) é um elemento de interface gráfica (isto é um componente widget) que permite ao usuário mostrar dados hierárquicos em forma de árvore, expandir ou recolher os ramos e nós. Dependendo do wiget toolkit ou aplicação em uso, existem muitos estilos de apresentação gráfica de tree views.
TreeView
Exibe uma coleção hierárquica de itens rotulados, cada um representado por um TreeNode.
TreeNode
Representa um nó de um TreeView.
Exemplo:
Neste exemplo usamos uma visão de arvore para exibir uma discografia musical, você pode abrir e fechar os nós do modelo de dados em visão de árvore, um duplo clique do mouse em cada nó dispara um evento para que exibido a descrição do nó corrente em um rodapé.
C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Arvorecs { public partial class Form1 : Form { // Declara componentes Label rotulo; Label rodape; TreeView disco; // Declara variaveis e Arrays String albumB = "Please, Please Me"; String[] MusicaB = { "I Saw Her Standing There", "Misery", "Anna (Go to Him)", "Chains" , "Boys" , "Ask Me Why", "Please Please Me", "Love Me Do" , "P.S. I Love You", "Baby It's You", "Do You Want To Know A Secret?", "A Taste of Honey", "There's A Place", "Twist and Shout" }; String albumR = "The Rolling Stones"; String[] MusicaR ={ "Route 66", "I Just Want to Make Love to You", "Honest I Do", "Mona (I Need You Baby)", "You Can Make It If You Try", "Little by Little", "I\'m a King Bee", "Carol", "Tell Me (You \'re Coming Back)", "Can I Get a Witness", "Tell Me (You\'re Coming Back)", "Walking the Dog" }; public Form1() { InitializeComponent(); } private void Form1_Shown(object sender, EventArgs e) { // Define propriedades do formulario this.Text = "DA - TreeView"; this.Size = new Size(350, 600); // Cria componentes rotulo = new Label(); rodape = new Label(); disco = new TreeView(); // Define texto dos componentes rotulo.Text = "Duplo clique em um nó da arvore:"; rodape.Text = "Evento do mouse"; // Define tamanho dos componentes rotulo.Size = new Size(300, 20); rodape.Size = new Size(300, 20); disco.Size = new Size(300, 500); // Alinha textos rotulo.TextAlign = ContentAlignment.TopCenter; rodape.TextAlign = ContentAlignment.TopCenter; // Posiciona componentes rotulo.Location = new Point(10, 10); rodape.Location = new Point(10, 540); disco.Location = new Point(10, 30); // Cria nós da arvore TreeNode titulo = new TreeNode("Discografia"); TreeNode b1 = new TreeNode("Beatles"); TreeNode b2 = new TreeNode("Rolling Stones"); TreeNode a1 = new TreeNode(albumB); TreeNode a2 = new TreeNode(albumR); // Adiciona nós na arvore e sub-nós titulo.Nodes.Add(b1); titulo.Nodes.Add(b2); b1.Nodes.Add(a1); b2.Nodes.Add(a2); TreeNode m1 = new TreeNode(); TreeNode m2 = new TreeNode(); for (int i = 0; i < MusicaB.Length ; i++) { m1 = new TreeNode(MusicaB[i]); a1.Nodes.Add(m1); } for (int i = 0; i < MusicaR.Length; i++) { m2 = new TreeNode(MusicaR[i]); a2.Nodes.Add(m2); } // Adiciona nó principal disco.Nodes.Add(titulo); // Evento da arvore disco.DoubleClick += new System.EventHandler(this.disco_DoubleClick); // Adiciona componentes no formulario this.Controls.Add(rotulo); this.Controls.Add(rodape); this.Controls.Add(disco); } private void disco_DoubleClick(object sender, EventArgs e) { // Seleciona nó corrente rodape.Text = disco.SelectedNode.ToString(); } } }