C# - Criando um 
ListView com ícones  - I
    
    
    ![]()  | 
    Hoje veremos como criar um ListView com ícones em uma aplicação Windows Forms. | 
Hoje vamos explorar a verstailidade do ListView para criar e exibir ícones pequenos e grandes.
Basicamente oque vamos fazer é colocar imagens em dois controles ImageList e a seguir definidir as propriedades LargeImageList e SmallImageList do controle ListView. Depois amos definir as propriedades ImageIndex dos itens com os índices pertinentes para os ícones corretos a exibir no ListView.
Vamos ao que interessa...
Criando o projeto Windows Forms
Vamos então criar um projeto do tipo Windows Forms App(.NET Framework) no VS 2019 Community no menu File -> New Project, com o nome WF_ListViewIcons;
No formulário Form1.cs inclua os seguintes controles:
Defina o leiaute do formulário conforme a imagem a seguir:
![]()
Os namespaces usados no projeto são:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
A seguir inclua o código abaixo no evento Load do formulário onde vamos criar as imagens e preencher o ListView - lvDados - com dados :
| 
		       
		private void Form1_Load(object sender, EventArgs e) { // Inicializa o ListView. lvDados.SmallImageList = imageList1; lvDados.LargeImageList = imageList2; 
		        
		   // Defina o cabeçalho das colunas 
		   
		        // Cria 
		as imagens 
		            
		imageList1.Images.Clear(); 
		            
		using (Pen pen_pequena = new Pen(Color.Blue, 2)) 
		                        
		Bitmap bm64x64 = new Bitmap(64, 64);  | 
	
Crie o método AdicionaLinha() onde vamos incluir os dados que vamos exibir no ListView:
		        // Adiciona uma nova linha ao ListView.
        public void AdicionaLinha(ListView lvw, string key,
            string titulo_item, params string[] titulo_subitem)
        {
            // Cria o item
            ListViewItem novo_item = lvw.Items.Add(titulo_item, key);
		            // Cria os sub-items.
            for (int i = titulo_subitem.GetLowerBound(0);
                     i <= titulo_subitem.GetUpperBound(0);
                     i++)
            {
                novo_item.SubItems.Add(titulo_subitem[i]);
            }
        }
		 | 
	
A seguir crie o método que vai criar o cabeçalho do ListView recebendo os itens e sub-itens a exibir:
		        public void CriaCabecalhoColuna(ListView lvw, params object[] cabecalho_info)
        {
            // Remove cabeçalhos existentes
            lvw.Columns.Clear();
		            // Cria o cabeçalho das colunas
            for (int i = cabecalho_info.GetLowerBound(0);
                     i <= cabecalho_info.GetUpperBound(0);
                     i += 3)
            {
                lvw.Columns.Add(
                    (string)cabecalho_info[i],
                    (int)cabecalho_info[i + 1],
                    (HorizontalAlignment)cabecalho_info[i + 2]);
            }
        }
		 | 
	
Crie o método DesenhaEstrela que vai criar uma imagem de uma estrela com número x de pontas:
| 
		      
		 // Desenha uma estrela que indica o numero 
		de pontas da estrela private void DesenhaEstrela(Graphics gr, RectangleF rect, int numero_pontos, Pen pen, Brush brush) { // Calcula float cx = (rect.Left + rect.Right) / 2f; float cy = (rect.Top + rect.Bottom) / 2f; float rx1 = rect.Width / 2f - 1; float ry1 = rect.Height / 2f - 1; float rx2 = rx1 / 3f; float ry2 = ry1 / 3f; 
		    
		       // Gera os 
		pontos das estrelas 
		        
		   // Desenha a figura  | 
	
No evento SelectedIndexChanged do cboEstilo defina o código abaixo para alterar o modo de exibição do ListView:
		        private void CboEstilo_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cboEstilo.Text)
            {
                case "Ícones Grandes":
                    lvDados.View = View.LargeIcon;
                    break;
                case "Ícones Pequenos":
                    lvDados.View = View.SmallIcon;
                    break;
                case "Lista":
                    lvDados.View = View.List;
                    break;
                case "Lado a Lado":
                    lvDados.View = View.Tile;
                    break;
                case "Detalhes":
                    lvDados.View = View.Details;
                    break;
            }
        }
		 | 
	
Executando projeto teremos o resultado abaixo:
![]()
Em outro artigo veremos como usar o ListView para exibir imagens e também a imagem selecionada.
Pegue o 
projeto completo aqui :  
 
WF_ListViewIcons.zip
"E (Jesus) disse-lhes: Acautelai-vos e guardai-vos da 
avareza; porque a vida de qualquer não consiste na abundância do que possui.""
Lucas 12:15
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - StreamReader, StringReader e TextReader . Qual a ... - Macoratti
C# - Imprimindo um arquivo texto - Macoratti
C# - Usando OpenFileDialog - Macoratti
C# - Formatando arquivos textos - Macoratti
C# - Convertendo valores para o formato monetário
C# - ListView Manutenção de dados - Macoratti
C# - Lendo e escrevendo em arquivos textos e binários - Macoratti
C# - ListView - Preenchendo com dados e ... - Macoratti
VB.NET - Conversão entre tipos de variáveis - Macoratti
C# - ListView - Macoratti
C# - Localizando Arquivos - Macoratti