Asunto: Mostrar carpetas y subcarpetas en TreeView Visual Basic .Net
Estoy usando Microsoft Visual Basic .Net 2010 como lenguaje de programación. Estoy desarrollando una aplicación y necesito mostrar en un TreeView las carpetas y subcarpetas de una ruta dada. Además, necesito que no sea muy lento a la hora de mostrarlo. He visto algunas cosas por Internet pero si, por ejemplo, cargo toda la unidad C va lentísimo.
Publicado:
Vie Ago 05, 2011 1:05 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Mostrar carpetas y subcarpetas en TreeView Visual Basic
Anuncios
varios escribió:
Estoy usando Microsoft Visual Basic .Net 2010 como lenguaje de programación. Estoy desarrollando una aplicación y necesito mostrar en un TreeView las carpetas y subcarpetas de una ruta dada. Además, necesito que no sea muy lento a la hora de mostrarlo. He visto algunas cosas por Internet pero si, por ejemplo, cargo toda la unidad C va lentísimo.
A continuación te mostramos un código para mostrar las carpetas y subcarpetas de una unidad o ruta indicada. Además, este ejemplo no carga todas las carpetas y subcarpetas "de golpe" (al principio), sino que usa el evento "AfterExpand" del TreeView para cargar las subcarpetas del nodo desplegado. De esta forma la carga es muy rápida y eficiente:
Nota: para este ejemplo necesitarás en el formulario un TreeView (que hemos llamado TreeView1), un Button (llamado Button1) y un TextBox (llamado TextBox1):
Código:
Public Class ExploradorCarpetasVB
Public Sub cargarSubcarpetas(ByVal rutaRaiz As String,
ByVal nodoTree As Windows.Forms.TreeNode)
On Error Resume Next
Dim carpetaActual As String
Dim indice As Integer
If nodoTree.Nodes.Count = 0 Then
For Each carpetaActual In
My.Computer.FileSystem.GetDirectories(rutaRaiz)
indice = carpetaActual.LastIndexOf(System.IO.Path.PathSeparator)
nodoTree.Nodes.Add(carpetaActual.Substring(indice + 1,
carpetaActual.Length - indice - 1))
nodoTree.LastNode.Tag = carpetaActual
nodoTree.LastNode.ImageIndex = 0
Next
End If
End Sub
Public Sub cargarCarpetas(ByVal rutaRaiz As String)
Dim nodoBase As System.Windows.Forms.TreeNode
If IO.Directory.Exists(rutaRaiz) Then
If rutaRaiz.Length <= 3 Then
nodoBase = TreeView1.Nodes.Add(rutaRaiz)
Else
nodoBase = TreeView1.Nodes.Add(
My.Computer.FileSystem.GetName(rutaRaiz))
End If
nodoBase.Tag = rutaRaiz
cargarSubcarpetas(rutaRaiz, nodoBase)
Else
Throw New System.IO.DirectoryNotFoundException()
End If
End Sub
Private Sub Button1_Click(sender As System.Object,
e As System.EventArgs) Handles Button1.Click
cargarCarpetas(TextBox1.Text)
End Sub
Private Sub TreeView1_AfterExpand(sender As System.Object,
e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterExpand
Dim n As System.Windows.Forms.TreeNode
For Each n In e.Node.Nodes
cargarSubcarpetas(n.Tag, n)
Next
End Sub
End Class
El código está probado en VB.Net 2010 y en Windows 7, funciona perfectamente.
Publicado:
Vie Ago 05, 2011 1:10 pm
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: [RESUELTO] Mostrar carpetas y subcarpetas en TreeView VB.Net
Anuncios
Ok, muchas gracias, solucionado. Efectivamente, lo he probado en Windows 2003 y Windows Server 2008 y funciona también bien, va rápido.
Publicado:
Vie Ago 05, 2011 1:12 pm
alfonsot Usuario
Registrado: Feb 11, 2014 Mensajes: 1
Asunto:
Hola, necesito hacer exatemente lo que esta en este post pero no puedo hacer funcionar este codigo.
Alguien me podria ayudar con esto?
Sera que no c donde tengo q cololar el codigo o algo?
Publicado:
Mar Feb 11, 2014 5:07 pm
anty290490 Usuario
Registrado: Jun 15, 2014 Mensajes: 1
Asunto:
yo igual tengo un error dice que no encuentra la ruta de acceso en el disco. Donde agrego la carpeta principal, que nombre se le pone y cual es la carpeta raíz????
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A