¡ Hola ! Soy novato en esto de la programacion y estaba queriendo cargar imagenes que se encuentren en distintas carpetas dentro de la carpeta mis imagenes. que ya logre hacerlo. Lo que me esta complicando es que quiero cargar debajo de cada imagen el nombre de la carpeta donde se encuentre dicha imagen.
paso el codigo:
Imports System.Drawing.Image
Imports System.IO ' para el método GetDirectories de la clase Directoy
' Para la colección de archivos devueltos por FileSystem.GetFiles
Imports System.Collections.ObjectModel
'Para las api
Imports System.Runtime.InteropServices
Public Class Form1
Dim petterns() As String = {"*.jpg"}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim pistas As String = "D:\musica Organizada"
buscar(pistas)
ListView1.Alignment = ListViewAlignment.Left
ImageList1.ImageSize = New Size(200, 200)
For j As Integer = 0 To Me.ImageList1.Images.Count - 1
Dim item As New ListViewItem()
item.ImageIndex = j
ListView1.Items.Add(item)
Next
If ListView1.Items.Count > 0 Then
ListView1.Items(0).Selected = True
End If
End Sub
' función recursiva para los directorios
Private Sub buscar(ByVal sPath As String)
' obtener todos los subdirectorios en una matriz de string
Dim carpetas() As String = Directory.GetDirectories(sPath)
' recorrer el array
For Each dir As String In carpetas
Try
' buscar de nuevo
buscar(dir)
listar_archivos(dir, ImageList1)
Catch ex As UnauthorizedAccessException
Debug.Print(ex.Message.ToString)
Catch ex1 As Exception
Debug.Print(ex1.Message.ToString)
End Try
Next
End Sub
Private Sub listar_archivos( _
ByVal sPath As String, _
ByVal Ilist As ImageList, Optional ByRef ErrInfo As String = "")
Try
' colección para GetFiles
Dim Collections_Files As ReadOnlyCollection(Of String)
' Obtener todos ficheros ( un solo nivel de dir.)
Collections_Files = My.Computer.FileSystem.GetFiles( _
sPath, _
FileIO.SearchOption.SearchTopLevelOnly, _
petterns)
' agregar a la lista las rutas
For Each archivo As String In Collections_Files
Ilist.Images.Add(Image.FromFile(archivo))
ListView1.LargeImageList = Ilist
'codigo para obtener el nombre de la carpeta donde se encuentra la imagen
Dim l As New ListViewItem(Strings.Split(archivo, "\"c)(2))
l.Tag = Strings.Split(archivo, "\"c)
' ListView1.Items.Add(l)
Next
Catch ex As Exception
End Try
End Sub
End Class