Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Una de las ventajas de Visual Studio es la capacidad de crear aplicaciones de Windows Forms de aspecto profesional en un breve período de tiempo. Un escenario común consiste en crear una interfaz de usuario (UI) con ListView controles y TreeView que se parezcan a la característica Explorador de Windows de los sistemas operativos Windows. El Explorador de Windows muestra una estructura jerárquica de los archivos y carpetas en el equipo de un usuario.
Para crear el formulario que contiene un control ListView y TreeView
En el menú Archivo , elija Nuevoy haga clic en Proyecto.
En el cuadro de diálogo Nuevo proyecto , haga lo siguiente:
En las categorías, elija Visual Basic o Visual C#.
En la lista de plantillas, elija Aplicación de Windows Forms.
Haz clic en Aceptar. Se crea un nuevo proyecto de Windows Forms.
Agregue un SplitContainer control al formulario y establezca su Dock propiedad en Fill.
Agregue un ImageList denominado
imageList1al formulario y use la ventana Propiedades para agregar dos imágenes: una imagen de carpeta y una imagen de documento, en ese orden.Agregue un TreeView control denominado
treeview1al formulario y cológuelo en el lado izquierdo del SplitContainer control. En la ventana Propiedades paratreeView1hacer lo siguiente:Agregue un ListView control denominado
listView1al formulario y colótelo en el lado derecho del SplitContainer control. En la ventana Propiedades paralistview1hacer lo siguiente:Abra el Editor de colección ColumnHeader haciendo clic en los puntos suspensivos (el botón de puntos suspensivos
Añada tres columnas y establezca sus propiedades en Columns, Text, y Name, respectivamente. Haga clic en Aceptar para cerrar el cuadro de diálogo.Establezca la propiedad SmallImageList en
imageList1..
Implemente el código para rellenar el TreeView con nodos y subnodos. Agregue este código a la
Form1clase .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 SubDado que el código anterior usa el espacio de nombres System.IO, agregue la instrucción using o import adecuada en la parte superior del formulario.
using System.IO;Imports System.IOLlame al método de configuración del paso anterior en el constructor del formulario o en el método Load de manejo de eventos. Agregue este código al constructor de formulario.
public Form1() { InitializeComponent(); PopulateTreeView(); }Public Sub New() InitializeComponent() PopulateTreeView() End SubControle el evento NodeMouseClick para
treeview1e implemente el código para rellenarlistview1con el contenido de un nodo cuando se hace clic en él. Agregue este código a laForm1clase .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 SubSi usa C#, asegúrese de que tiene el NodeMouseClick evento asociado a su método de control de eventos. Agregue este código al constructor de formulario.
this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);
Probar la aplicación
Ahora puede probar el formulario para asegurarse de que se comporta según lo previsto.
Para probar el formulario
Presione F5 para ejecutar la aplicación.
Verá un formulario dividido que contiene un TreeView control que muestra el directorio del proyecto en el lado izquierdo y un ListView control en el lado derecho con tres columnas. Puede recorrer el TreeView seleccionando nodos de directorio, y el ListView se rellena con el contenido del directorio seleccionado.
Pasos siguientes
Esta aplicación proporciona un ejemplo de una manera de usar TreeView y ListView controles juntos. Para obtener más información sobre estos controles, consulte los temas siguientes:
Cómo: Agregar información personalizada a un control TreeView o ListView (Formularios Windows Forms)
Cómo: Agregar funcionalidades de búsqueda a un control ListView
Consulte también
.NET Desktop feedback