Quick Tips: Carregando uma lista de objetos em um ListView com Reflection

Nesta quick tip veremos como carregar uma lista de objetos dinamicamente em um ListView em uma aplicação WindowsForms.

Quick Tips: Carregando uma lista de objetos em um ListView com Reflection

 

Nesta quick tip veremos como carregar uma lista de objetos dinamicamente em um ListView em uma aplicação WindowsForms.

 

Insira um botão e um ListView no formulário e altere a propriedade View para Details.

 

Declare uma classe Cliente que será quem exibiremos na listView.

 

public class Cliente

{

public int Codigo { get; set; }

public String Nome { get; set; }

public String Bairro { get; set; }

}

 

Abaixo está o código para carregar a lista de clientes dinamicamente na ListView.

private void BtnLoad_Click(object sender, EventArgs e)

{

//Cria lista de clientes

List<Cliente> lista = new List<Cliente>();

//Cria, alimenta e 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);

//Recupera lista de propriedades da classe Cliente

PropertyInfo[] props = typeof(Cliente).GetProperties();

//Percorre lista de propriedades da classe Cliente

foreach (PropertyInfo p in props)

{

//Cria uma nova coluna

ColumnHeader col = new ColumnHeader();

//Adiciona ao listView

listView1.Columns.Add(col);

//Altera o text atribuindo o nome da propriedade de Cliente

col.Text = p.Name;

//Ajusta o tamanho da coluna

col.Width = 100;

}

//Percorre lista de clientes

foreach (Cliente cliente in lista)

{

//Adiciona um item em branco no listView

ListViewItem item = listView1.Items.Add("");

foreach (PropertyInfo p in props)

{

//Se for a primeira propriedade então coloca seu valor no text do item

//Senão adiciona um subItem com o valor da propriedade

if (p == props[0])

{

item.Text = p.GetValue(cliente,null).ToString();

}

else

{

item.SubItems.Add(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.

 

 

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados