Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um dos benefícios do Visual Studio é a capacidade de criar aplicativos do Windows Forms de aparência profissional em um curto período de tempo. Um cenário comum é criar uma interface do usuário (interface do usuário) com controles ListView e TreeView que se assemelham ao recurso do Windows Explorer de sistemas operacionais Windows. O Windows Explorer exibe uma estrutura hierárquica dos arquivos e pastas no computador de um usuário.
Para criar um formulário que contenha um controle ListView e TreeView
No menu Arquivo , aponte para Novoe clique em Projeto.
Na caixa de diálogo Novo Projeto, faça o seguinte:
Nas categorias, escolha Visual Basic ou Visual C#.
Na lista de modelos, escolha Aplicativo do Windows Forms.
Clique em OK. Um novo projeto do Windows Forms é criado.
Adicione um controle SplitContainer ao formulário e defina sua propriedade Dock como Fill.
Adicione um ImageList chamado
imageList1ao formulário e use a janela Propriedades para adicionar duas imagens: uma imagem de pasta e uma imagem de documento, nessa ordem.Adicione um controle TreeView chamado
treeview1ao formulário e posicione-o no lado esquerdo do controle SplitContainer. Na janela Propriedades paratreeView1faça o seguinte:Adicione um controle ListView chamado
listView1ao formulário e posicione-o no lado direito do controle SplitContainer. Na janela Propriedades paralistview1faça o seguinte:Abra o Editor de Coleção ColumnHeader clicando nas reticências (
) na propriedade Columns**.** Adicione três colunas e defina a propriedade Text delas como Name,TypeeLast Modified, respectivamente. Clique em OK para fechar a caixa de diálogo.Defina a propriedade SmallImageList como
imageList1.
Implemente o código para preencher o TreeView com nós e subnodos. Adicione esse código à classe
Form1.private void PopulateTreeView() { TreeNode rootNode; DirectoryInfo info = new DirectoryInfo(@"../.."); if (info.Exists) { rootNode = new TreeNode(info.Name); rootNode.Tag = info; GetDirectories(info.GetDirectories(), rootNode); treeView1.Nodes.Add(rootNode); } } private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo) { TreeNode aNode; DirectoryInfo[] subSubDirs; foreach (DirectoryInfo subDir in subDirs) { aNode = new TreeNode(subDir.Name, 0, 0); aNode.Tag = subDir; aNode.ImageKey = "folder"; subSubDirs = subDir.GetDirectories(); if (subSubDirs.Length != 0) { GetDirectories(subSubDirs, aNode); } nodeToAddTo.Nodes.Add(aNode); } }Private Sub PopulateTreeView() Dim rootNode As TreeNode Dim info As New DirectoryInfo("../..") If info.Exists Then rootNode = New TreeNode(info.Name) rootNode.Tag = info GetDirectories(info.GetDirectories(), rootNode) treeView1.Nodes.Add(rootNode) End If End Sub Private Sub GetDirectories(ByVal subDirs() As DirectoryInfo, _ ByVal nodeToAddTo As TreeNode) Dim aNode As TreeNode Dim subSubDirs() As DirectoryInfo Dim subDir As DirectoryInfo For Each subDir In subDirs aNode = New TreeNode(subDir.Name, 0, 0) aNode.Tag = subDir aNode.ImageKey = "folder" subSubDirs = subDir.GetDirectories() If subSubDirs.Length <> 0 Then GetDirectories(subSubDirs, aNode) End If nodeToAddTo.Nodes.Add(aNode) Next subDir End SubComo o código anterior usa o namespace System.IO, adicione a instrução de uso ou importação apropriada na parte superior do formulário.
using System.IO;Imports System.IOChame o método de configuração da etapa anterior no construtor do formulário ou no método de tratamento de eventos Load. Adicione esse código ao construtor de formulários.
public Form1() { InitializeComponent(); PopulateTreeView(); }Public Sub New() InitializeComponent() PopulateTreeView() End SubManipule o evento NodeMouseClick para
treeview1, e implemente o código para preencherlistview1com o conteúdo de um nó quando um nó é clicado. Adicione esse código à classeForm1.void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { TreeNode newSelected = e.Node; listView1.Items.Clear(); DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag; ListViewItem.ListViewSubItem[] subItems; ListViewItem item = null; foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories()) { item = new ListViewItem(dir.Name, 0); subItems = new ListViewItem.ListViewSubItem[] {new ListViewItem.ListViewSubItem(item, "Directory"), new ListViewItem.ListViewSubItem(item, dir.LastAccessTime.ToShortDateString())}; item.SubItems.AddRange(subItems); listView1.Items.Add(item); } foreach (FileInfo file in nodeDirInfo.GetFiles()) { item = new ListViewItem(file.Name, 1); subItems = new ListViewItem.ListViewSubItem[] { new ListViewItem.ListViewSubItem(item, "File"), new ListViewItem.ListViewSubItem(item, file.LastAccessTime.ToShortDateString())}; item.SubItems.AddRange(subItems); listView1.Items.Add(item); } listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }Private Sub treeView1_NodeMouseClick(ByVal sender As Object, _ ByVal e As TreeNodeMouseClickEventArgs) _ Handles treeView1.NodeMouseClick Dim newSelected As TreeNode = e.Node listView1.Items.Clear() Dim nodeDirInfo As DirectoryInfo = _ CType(newSelected.Tag, DirectoryInfo) Dim subItems() As ListViewItem.ListViewSubItem Dim item As ListViewItem = Nothing Dim dir As DirectoryInfo For Each dir In nodeDirInfo.GetDirectories() item = New ListViewItem(dir.Name, 0) subItems = New ListViewItem.ListViewSubItem() _ {New ListViewItem.ListViewSubItem(item, "Directory"), _ New ListViewItem.ListViewSubItem(item, _ dir.LastAccessTime.ToShortDateString())} item.SubItems.AddRange(subItems) listView1.Items.Add(item) Next dir Dim file As FileInfo For Each file In nodeDirInfo.GetFiles() item = New ListViewItem(file.Name, 1) subItems = New ListViewItem.ListViewSubItem() _ {New ListViewItem.ListViewSubItem(item, "File"), _ New ListViewItem.ListViewSubItem(item, _ file.LastAccessTime.ToShortDateString())} item.SubItems.AddRange(subItems) listView1.Items.Add(item) Next file listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize) End SubSe você estiver usando C#, verifique se você tem o evento NodeMouseClick associado ao método de manipulação de eventos. Adicione esse código ao construtor de formulários.
this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);
Testando o aplicativo
Agora você pode testar o formulário para garantir que ele se comporte conforme o esperado.
Para testar o formulário
Pressione F5 para executar o aplicativo.
Você verá um formulário dividido contendo um controle TreeView que exibe o diretório do projeto no lado esquerdo e um controle ListView no lado direito com três colunas. Você pode percorrer a TreeView selecionando nós de diretório e o ListView é preenchido com o conteúdo do diretório selecionado.
Próximas etapas
Este aplicativo fornece um exemplo de como você pode usar controles TreeView e ListView juntos. Para obter mais informações sobre esses controles, consulte os seguintes tópicos:
Consulte também
.NET Desktop feedback