Quick Tips: TreeView em WindowsForms – Parte 2
Nesta quick tip veremos como usar o montar visualizações em árvore de um objeto dinamicamente usando Reflection.
Para isso vamos usar o mesmo exemplo da primeira parte da quickTip. Apenas inclua um botão “LoadList” , como mostrada na figura abaixo.
Implemente a classe Cliente da seguinte forma:
public class Cliente
{
public int Codigo { get; set; }
public String Nome { get; set; }
public String Bairro { get; set; }
}
É este domínio que trabalharemos para exibir na treeview.
private void button2_Click(object sender, EventArgs e)
{
//Cria lista de clientes
List<Cliente> lista = new List<Cliente>();
//Adiciona clientes à lista
Cliente c = new Cliente();
c.Codigo = 1;
c.Nome = "Ricardo";
c.Bairro = "Relango";
lista.Add(c);
c = new Cliente();
c.Codigo = 2;
c.Nome = "Julia";
c.Bairro = "Barra";
lista.Add(c);
c = new Cliente();
c.Codigo = 3;
c.Nome = "Givonilda";
c.Bairro = "Recreio";
lista.Add(c);
c = new Cliente();
c.Codigo = 4;
c.Nome = "Maria";
c.Bairro = "Irajá";
lista.Add(c);
//percorre lista de clientes
foreach(Cliente cliente in lista){
//recupera propriedades de Cliente
PropertyInfo[] props = cliente.GetType().GetProperties();
//Insere um nó raiz com o código do cliente
TreeNode NodeIns = treeView.Nodes.Add(cliente.GetType().Name + ": " + props[0].GetValue(cliente, null));
//percorre a lista de propriedades
foreach(PropertyInfo p in props){
//Insere nó filho no nó inserido na raiz anteriormente
NodeIns.Nodes.Add(p.Name + ": " + p.GetValue(cliente, null).ToString());
}
}
}
}
Resultado da execução da rotina.
É isso aí pessoal, vou ficando por aqui.
Fiquem a vontade para criticar, tirar dúvidas e sugerir novos temas.
Abraço.