Vous êtes sur la page 1sur 10

2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

  C# - Exibindo Arquivos e diretórios no TreeView com Progressbar

 Neste artigo vou mostrar como exibir arquivos e diretórios em um


controle TreeView usando a linguagem C#.

Vamos criar uma aplicação Windows Forms na linguagem C# que vai utilizar um controle TreeView para exibir os arquivos e subdiretórios de uma pasta selecionada.

Para saber mais sobre o controle TreeView veja os meus artigos relacionados ao C# :

C# - Usando o controle TreeView - Macoratti.net

C# - Usando TreeView com Banco de dados - Macoratti.net

C# - Exibindo dados com ListView e TreeView - Macoratti.net

Recursos Usados:

VS 2017 Community (update 15.4.2)

Criando o projeto Windows Forms


Abra o VS 2017 Community e crie um projeto Windows Classic Desktop do tipo Windows Forms App(.NET Framework) com o nome CShp_TreeView:

http://www.macoratti.net/17/11/c_arqdirtv1.htm 1/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

No formulário Form1.cs do projeto inclua os seguintes controles:

1 Label - cboBusca
1 TextBox - txtDiretorio
1 Button - btnProcurar
1 TreeView - tvDados
1 Progressbar - pgbar1
1 Button - btnCarregarPasta
1 FolderBrowserDialog - fbdlg1
1 ImageList - imglst1
1 ToolTip - ToolTip1

Disponha os controle conforme o leiaute da figura abaixo:

http://www.macoratti.net/17/11/c_arqdirtv1.htm 2/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

Declare os seguintes namespaces no formulário:


 
using System;
using System.IO;
using System.Windows.Forms;

Incluindo imagens no controle ImageList


Vamos incluir duas imagens no controle ImageList.

Para isso abra a janela de propriedades do controle e clique em Images e inclua a imagem para o arquivo e a imagem para a pasta conforme mostra a figura abaixo:

http://www.macoratti.net/17/11/c_arqdirtv1.htm 3/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

Após isso selecione o controle TreeView e defina a sua propriedade StateImageList igual ao controle ImageList : imglist1 conforme abaixo:

Implementando o código do formulário


1- Código do evento Click do botão btnProcurar que permite ao usuário selecionar uma pasta:

private void btnProcurar_Click(object sender, EventArgs e)


{
http://www.macoratti.net/17/11/c_arqdirtv1.htm 4/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

//atribui o valor da caixa de texto


fbdlg1.SelectedPath = txtDiretorio.Text;
//exibe o dialogo folderbrowser
DialogResult drResultado = fbdlg1.ShowDialog();
//atribui o nome da pasta selecionada à caixa de texto
if (drResultado == System.Windows.Forms.DialogResult.OK)
txtDiretorio.Text = fbdlg1.SelectedPath;
}

2- Código do evento Click do botão btnCarregarPasta que carrega os dados de uma pasta selecionada

private void btnCarregarPasta_Click(object sender, EventArgs e)


{
// Define o valor inicial da progressbar
pgbar1.Value = 0;
// Limpa todos os Nodes
tvDados.Nodes.Clear();
toolTip1.ShowAlways = true;
//Carrega os dados da Pasta informada se ela existir
if (txtDiretorio.Text != "" && Directory.Exists(txtDiretorio.Text))
{
CarregaDadosPasta(txtDiretorio.Text);
}
else
{
MessageBox.Show("Selecione uma pasta!!");
}
}

Precisamos definir o método CarregaDadosPasta().

3- Código do método CarregarDadosPasta

Neste código definimos o valor máximo para o controle ProgressBar com base na informação do diretório selecionado retornando o número de items existentes.

A seguire selecionamos um objeto do tipo TreeNode com o nome do diretorório informado e chamamos os métodos :

 CarregaArquivos(diretorio, tds);
 CarregaSubDiretorios(diretorio, tds);

private void CarregaDadosPasta(string diretorio)


{
DirectoryInfo diretorioInfo = new DirectoryInfo(diretorio);
//Define o valor máximo do ProgressBar
pgbar1.Maximum = Directory.GetFiles(diretorio, "*.*", SearchOption.AllDirectories).Length + Directory.GetDirectories(diretorio, "**", SearchOption.AllDirectories).Length;
TreeNode tds = tvDados.Nodes.Add(diretorioInfo.Name);
tds.Tag = diretorioInfo.FullName;
http://www.macoratti.net/17/11/c_arqdirtv1.htm 5/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

tds.StateImageIndex = 0;
//carrega os arquivos e as subpastas
CarregaArquivos(diretorio, tds);
CarregaSubDiretorios(diretorio, tds);
}

4- Código do método CarregaArquivos

Neste código obtemos os arquivos do diretório e obtemos a informação do nome exibindo-o no TreeNode e atribuindo a imagem do ImageList de índice igual a 1:

private void CarregaArquivos(string diretorio, TreeNode tnd)


{
string[] arquivos = Directory.GetFiles(diretorio, "*.*");

// Percorre os arquivos
foreach (string arq in arquivos)
{
FileInfo arquivo = new FileInfo(arq);
TreeNode tds = tnd.Nodes.Add(arquivo.Name);
tds.Tag = arquivo.FullName;
tds.StateImageIndex = 1;
AtualizaProgressBar();
}
}

5- Código do método CarregaSubDiretorios

Neste código carregamos os subdiretórios da pasta selecionada e obtemos o nome atribuindo ao TreeNode.

A seguir chamamos novamente os métodos para obter os arquivos e subpastas que podem existir em cada subpasta.

private void CarregaSubDiretorios(string dir, TreeNode td)


{
// Pega todos os subdiretorios
string[] subdiretorioEntradas = Directory.GetDirectories(dir);
// Percorre os subdiretorios a ver se existem outras subpasts
foreach (string subdiretorio in subdiretorioEntradas)
{
DirectoryInfo diretorio = new DirectoryInfo(subdiretorio);
TreeNode tds = td.Nodes.Add(diretorio.Name);
tds.StateImageIndex = 0;
tds.Tag = diretorio.FullName;
CarregaArquivos(subdiretorio, tds);
CarregaSubDiretorios(subdiretorio, tds);
AtualizaProgressBar();

http://www.macoratti.net/17/11/c_arqdirtv1.htm 6/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

}
}

6- Código do método AtualizaProgressBar

Este método atualiza a exibição do controle Progressbar durante a carga dos dados da pasta selecionada:

private void AtualizaProgressBar()


{
if (pgbar1.Value < pgbar1.Maximum)
{
pgbar1.Value++;
int percentual = (int)(((double)pgbar1.Value / (double)pgbar1.Maximum) * 100);
pgbar1.CreateGraphics().DrawString(percentual.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular), Brushes.Black,
new PointF(pgbar1.Width / 2 - 10, pgbar1.Height / 2 - 7));
Application.DoEvents();
}
}

7- Código do evento MouseMove do controle TreeView

Neste código tratamos da exibição da ToolTip conforme a posição do ponteiro do mouse:

private void tvDados_MouseMove(object sender, MouseEventArgs e)


{
// Pega o node na posição do ponteiro do mouse
TreeNode theNode = this.tvDados.GetNodeAt(e.X, e.Y);

// Define uma ToolTip somente se o ponteiro do mouse estive em um node


if (theNode != null && theNode.Tag != null)
{
// Altera a ToolTip somente se o ponteiro do mouse se mover para um novo Node
if (theNode.Tag.ToString() != this.toolTip1.GetToolTip(this.tvDados))
this.toolTip1.SetToolTip(this.tvDados, theNode.Tag.ToString());

}
else // O ponteiro não esta sobre um Node então limpa a ToolTip.
{
this.toolTip1.SetToolTip(this.tvDados, "");
}
}

Executando o projeto iremos obter o seguinte resultado:

1- Selecionando uma pasta e carregando os dados da pasta:

http://www.macoratti.net/17/11/c_arqdirtv1.htm 7/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

2- Exibindo os arquivos e subdiretórios

http://www.macoratti.net/17/11/c_arqdirtv1.htm 8/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

Pegue o código do projeto aqui :  CShp_TreeView.zip

Antes, como ministros de Deus, tornando-nos recomendáveis em tudo; na muita paciência, nas aflições, nas necessidades, nas angústias,Como contristados, mas
sempre alegres; como pobres, mas enriquecendo a muitos; como nada tendo, e possuindo tudo. 
2 Coríntios 6:4,10

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e
confira !

Quer migrar para o VB .NET ?

Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira...

Curso Básico VB .NET - Vídeo Aulas

Quer aprender C# ??

Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso
básico sobre C#.

Curso C# Basico - Video Aulas

http://www.macoratti.net/17/11/c_arqdirtv1.htm 9/10
2/24/2018 C# - Exibindo Arquivos e diretórios no TreeView

Quer aprender os conceitos da Programação Orientada a objetos ?

Curso Fundamentos da Programação Orientada a Objetos com VB .NET

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

 Curso - Gerando Relatórios com o ReportViewer no VS 2013 - Vídeo Aulas  

Referências:

Seção VB .NET do Site Macoratti.net


Super DVD .NET - A sua porta de entrada na plataforma .NET
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Seção C# do site Macoratti.net
Seção ASP .NET do site Macoratti .net
Curso Básico VB .NET - Vídeo Aulas
Curso C# Básico - Vídeo Aulas
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Macoratti .net | Facebook
macoratti - YouTube
Jose C Macoratti (@macorati) | Twitter
Usando o Controle TreeView - Macoratti.net
Usando o controle TreeView - Macoratti.net
Exibindo tabelas e registros em um controle TreeView - Macoratti.net
Usando TreeView e RichTextBox - Macoratti.net
Populando o controle TreeView com tabelas e colunas ... - Macoratti.net
WPF - Usando o controle TreeView - Macoratti.net

José Carlos Macoratti

http://www.macoratti.net/17/11/c_arqdirtv1.htm 10/10

Vous aimerez peut-être aussi