Usar a classe FolderBrowserDialog
Trabalhar com Arrays
Configurar o DataGridView
Obter um item selecionado do Grid
Passar dados para outro formulário via construtor
Criar um DataTable em tempo de execução
Fechar todos os formulários abertos
Parece pouca coisa, mas para quem esta iniciando agora com C# são conceitos importantes para conhecer e dominar.
Recursos Usados:
Criando o projeto no VS 2017 Community
Abra o Visual Studio Community 2017 e clique em New Project;
Selecione Visual C#, o template Windows Classic Desktope a seguir Windows Forms App(.NET Framework);
A aplicação possui dois formulários :
A seguir temos o código usado no projeto:
Código do Formulário Form1:
1 - Namespaces usados:
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
2- Variável fbd1 definida no início do formulário:
FolderBrowserDialog fbd1 = new FolderBrowserDialog();
3- Código do botão de comando - Selecionar Pasta - que usa o FolderBrowserDialog para selecionar uma pasta:
private void btnSelecionarPasta_Click(object sender, EventArgs e) { try { //Define as propriedades do controle FolderBrowserDialog fbd1.Description = "Selecione uma pasta exibir as imagens"; fbd1.RootFolder = Environment.SpecialFolder.Desktop; fbd1.ShowNewFolderButton = true; //Exibe a caixa de diálogo if (fbd1.ShowDialog() == DialogResult.OK) { //Exibe a pasta selecionada txtDiretorio.Text = fbd1.SelectedPath; } ExibeArquivosDaPastaSelecionada(fbd1.SelectedPath); } catch(Exception ex) { MessageBox.Show(ex.Message); } } |
4 - Código do método ExibeArquivosDaPastaSelecionada() que vai exibir o nome dos arquivos de imagem usando o métpodo GetArquivosDaPasta() :
private void ExibeArquivosDaPastaSelecionada(string pasta) { String pastaOrigem = pasta; var filtros = new String[] { "jpg", "jpeg", "png", "gif", "tiff", "bmp" }; var arquivos = GetArquivosDaPasta(pastaOrigem, filtros, false); //Cria um DataTable com os dados dos arquivos DataTable tabela = new DataTable(); tabela.Columns.Add("Nome do Arquivo"); for (int i = 0; i < arquivos.Length; i++) { FileInfo arquivo = new FileInfo(arquivos[i]); tabela.Rows.Add(arquivo.Name); } //exibe os dados no datagridview dgvDados.DataSource = tabela; configuraDataGridView(); } |
5 - Código do método GetArquivosDaPasta() que define opções para filtrar e fazer a busca nas subpastas da pasta raiz :
public static String[] GetArquivosDaPasta(String pastaRaiz, String[] filtros, bool isRecursiva) { List<String> arquivosEncontrados = new List<String>(); //define as opções para exibir as imagens da pasta raiz var opcaoDeBusca = isRecursiva ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; foreach (var filtro in filtros) { arquivosEncontrados.AddRange(Directory.GetFiles(pastaRaiz, String.Format("*.{0}", filtro), opcaoDeBusca)); } return arquivosEncontrados.ToArray(); } |
6 - Código para configurar o DataGridView - dgvDados - definido algumas opções :
private void configuraDataGridView() { //define o nome, tamanho , inclui colunas e linha no gridview dgvDados.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders; dgvDados.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single; dgvDados.CellBorderStyle = DataGridViewCellBorderStyle.Single; dgvDados.GridColor = Color.Black; dgvDados.RowHeadersVisible = false; //define a coluna - Nome do Arquivo, sua largura e font e estilo dgvDados.Columns[0].Name = "Nome do Arquivo"; dgvDados.Columns[0].Width = 500; dgvDados.Columns[0].DefaultCellStyle.Font = new Font(this.dgvDados.DefaultCellStyle.Font, FontStyle.Bold); dgvDados.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgvDados.MultiSelect = false; } |
7 - Código do evento DoubleClick do DataGridView que obtem o caminho da imagem selecionada e passa os dados para uma instância do formulário Form2:
private void dgvDados_DoubleClick(object sender, EventArgs e) { try { string nomeImagem = dgvDados.CurrentRow.Cells[0].Value.ToString(); string caminhoImagem = fbd1.SelectedPath + "\\" + nomeImagem; txtDiretorio.Text = caminhoImagem; Form2 frmImagem = new Form2(caminhoImagem); frmImagem.Show(); } catch(Exception ex) { MessageBox.Show(ex.Message); } } |
8- Código do evento Click do botão - Encerrar - que fecha todas as intâncias de formulários aberto, com exceção do formulário Form1 :
private void btnEncerrar_Click(object sender, EventArgs e) { for (int i = Application.OpenForms.Count - 1; i >= 0; i--) { if (Application.OpenForms[i].Name != "Form1") Application.OpenForms[i].Close(); } this.Close(); } |
Código do Formulário Form2:
1 - Código do construtor do formulário Form2, onde passamos o caminho da imagem e exibimos a imagem no controle Picturebox - picImagem:
using System.Drawing;
using System.Windows.Forms;
namespace CShp_DataGridViewImagens
{
public partial class Form2 : Form
{
public Form2(string caminhoImagem)
{
InitializeComponent();
Image img;
img = Image.FromFile(caminhoImagem);
picImagem.Image = img;
}
}
}
|
Executando o projeto iremos obter o seguinte resultado :
Pegue o projeto completo aqui: CShp_DataGridViewImagens.zip
E agora, filhinhos, permanecei nele(Jesus); para que, quando ele se manifestar, tenhamos confiança, e não sejamos confundidos por ele na sua vinda. 1 João 2:28
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - DataGridView - Selecionando e exibindo registros - Macoratti
C# - DataGridView - Salvando o conteúdo e realizando ... - Macoratti
C# - DataGridView - Salvando o conteúdo e realizando ... - Macoratti
VB .NET - DataGridView - Selecionando e exibindo registros - Macoratti