En esta sesion, continuamos con la elaboracion de nuestros propios controles (UserControls).  La sesion pasada fue crear un control para validar correos electronicos (EmailInput).

Esta vez empezamos por definir algunos requerimientos para una nueva aplicacion.  Esta aplicacion nos permitira visualizar imagenes que podamos accesar desde nuestro sistema de archivos (lease unidades de disco tales como: discos duros, lectores cd o dvd, floppies, unidades de red mapeadas), basicamente como las que encontramos en windows explorer.  Hasta cierto punto vamos a “copiar” la funcionalidad del windows explorer en cuanto a que podremos seleccionar una unidad de disco, navegar por las carpetas/folders disponibles, y ver los archivos que estan dentro de las carpetas.  Finalmente, para seleccionar un archivo con extension de imagen y desplegarlo en nuestra forma…

Para esto vamos a empezar por desarrollar varios UserControls, especificamente:
DriveList, – FolderList, – FileList.

La funcionalidad principal para DriveList seria poder seleccionar una unidad de disco de la computadora; la funcionalidad principal para FolderList seria desplegar y navegar por los folders presentes; y la funcionalidad de FileList seria desplegar una lista de archivos para determinada carpeta.

DriveList UserControl

Este control sera un ComboBox para poder seleccionar alguna de las unidades de disco existentes en la computadora. En su evento Load, vamos a utilizar el metodo estatico GetDrives() de la clase DriveInfo del namespace System.IO; este metodo nos regresa un arreglo DriveInfo[] con cada uno de sus elementos representando una unidad de disco existente.

//(agregar la namespace System.IO al principio de nuestro codigo)

DriveInfo[] unidades = System.IO.DriveInfo.GetDrives();

..ya con esto, vamos a iterar el arreglo con un for, y agregar el nombre (letra asignada) de la unidad a nuestra lista ComboBox.  Aparte vamos a exponer la unidad seleccionada a manera de propiedad, esta propiedad la estoy llamando SelectedDrive:

drivelist01

por lo pronto, ya tenemos un UserControl para desplegar las unidades de disco existentes en la computadora !!

DriveList in action

FolderList UserControl

Ahora empecemos con nuestro segundo UserControl para navegar carpetas.  Para este, vamos a implementar un metodo que nos pida como parametro una ruta, entonces el metodo enlistara las subcarpetas de esta ruta en un ListBox.  Aparte vamos a exponer la ruta actual de nuestro control (como propiedad).

Vamos a ayudarnos del metodo estatico GetDirectories() de la clase Directory, iteramos el resultado y vamos agregando a nuestro ListBox.  En este punto, vamos a agregar una carpeta especial, para facilidad la vamos a nombrar “..” para simular un cambio de directorio hacia “afuera/arriba” en nuestro arbol de directorios/carpetas.

FolderList01

Ya tenemos nuestro metodo para captar una ruta, y desplegar las sub-carpetas de esa ruta, ahora vamos a extender un poco mas la funcionalidad de nuestro UserControl poniendo logica en el DobleClick / DoubleClick del listado de carpetas.  Esto para que podamos “entrar” a la carpeta que se da doble click, y ver las carpetas que estan dentro…

FolderList02

..con esto ya tenemos un “explorador” de carpetas; con la ayuda de un Label, y asignandole nuestra propiedad Path
label1.Text = folderList1.Path;
podemos desplegar la ruta actual de las carpetas que estan desplegadas…

FolderList in action
[tuve que recurrir a un Timer para sincronizar el label con el folderList, despues vamos a implementar eventos para que otros controles/objetos puedan ser notificados de acciones en nuestros controles…]

Hasta aqui llegamos durante la sesion… el martes despues del pequenho y facil examen le seguimos…

Descarga del proyecto fase uno (incompleto): Proyecto fase uno
nota obligatoria, renombrar el archivo a .zip

Anuncios