C# - ListView : Galeria de imagens - II
Hoje veremos como criar uma galeria de imagens usando o ListView em uma aplicação Windows Forms e também como excluir a imagem do ListView. |
Hoje vamos continuar a explorar a versatilidade do ListView para exibir imagens criando uma galeria de imagens e exibindo e excluindo uma imagem selecionada.
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_ListView_Imagens;
No formulário Form1.cs inclua os seguintes controles:
Defina o leiaute do formulário conforme a imagem a seguir:
A seguir vejamos a implementação do código no formulário.
Os namespaces usados no projeto são:
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
Logo após a declaração do formulário inclua o código abaixo onde criamos os ImageList e definimos a pasta padrão para obter as imagens:
private ImageList ImgList = new ImageList() { ImageSize = new Size(90, 90) }; private string ImagemFolder = @"C:\Users\user\Pictures\_nasa";
|
No evento Click do botão - Selecionar Pasta de Imagens - inclua o código que permite selecionar uma pasta para obter imagens e exibir no ListView:
private void BtnSelecionarPasta_Click(object sender, EventArgs e) { FolderBrowserDialog fbd1 = new FolderBrowserDialog(); // Define as propriedades do controle FolderBrowserDialog
fbd1.Description = "Selecione uma pasta das imagens";
fbd1.RootFolder = Environment.SpecialFolder.MyComputer;
fbd1.ShowNewFolderButton = true;
// Exibe a caixa de diálogo
if (fbd1.ShowDialog(this) == DialogResult.OK)
{
// Exibe a pasta selecionada
ImagemFolder = fbd1.SelectedPath;
}
//carrega imagens
CarregaImagens(ImagemFolder);
}
|
O método CarregaImagens() recebe a pasta selecionada e exibe as imagens no ListView:
private void
CarregaImagens(string Pasta) { //define a modo de exibição inical lvDados.View = View.LargeIcon; lvDados.LargeImageList = ImgList; lvDados.MultiSelect = false; int quantidadeArquivos = 0; string AllowedImageFormats = ".jpg.png.bmp.gif";
//obtem a quantidade de arquivos da pasta
quantidadeArquivos = Directory.GetFiles(Pasta).Length;
//se a quantidade for maior que 100 então emite um aviso
if (quantidadeArquivos > 100)
{
var resultado = MessageBox.Show("
A quantidade de arquivos a exibir pode afetar a memória do sistema. Deseja continuar ?",
"Exibir Imagens", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (resultado == DialogResult.No)
{
//restaura pasta padrão
ImagemFolder = @"C:\Users\user\Pictures\_nasa";
//retorna
return;
}
}
//percore as imagens na pasta e cria os Imagelist
foreach (string fn in Directory.GetFiles(Pasta))
{
if (AllowedImageFormats.Contains(Path.GetExtension(fn).ToLower()))
{
string name = System.IO.Path.GetFileName(fn);
ImgList.Images.Add(name, Image.FromFile(fn));
ListViewItem lvi = lvDados.Items.Add(name, name);
lvi.Tag = fn;
}
}
}
|
No evento ItemSelectionChanged do ListView temos o código que vai exibir a imagem selecionada no controle PictureBox :
private void LvDados_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
//exibe imagem selecionada no picturebox
if (e.IsSelected)
picImagem.Image = Image.FromFile(e.Item.Tag.ToString());
else
picImagem.Image = null;
}
|
Para concluir no evento Click do botão - Deletar Imagem - temos o código que exclui a imagem do ListView:
private void BtnDeletar_Click(object sender, EventArgs e) { //se selecionou uma imagem deleta a imagem do listView if (lvDados.SelectedItems.Count > 0) { if (picImagem.Image != null) picImagem.Image.Dispose(); picImagem.Image = null;
ImgList.Images.RemoveByKey(lvDados.SelectedItems[0].Text);
lvDados.Items.Remove(lvDados.SelectedItems[0]);
}
}
|
Executando projeto teremos o resultado abaixo:
Pegue o projeto completo aqui : WF_ListView_Imagens.zip
"Portanto,
agora nenhuma condenação há para os que estão em Cristo Jesus, que não andam
segundo a carne, mas segundo o Espírito."
Romanos 8:1
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