Índice
0. Introducción1. Problema
2. Solución
3. Discusión de la Solución
3.1 Clase OpenFileDialog
3.2 Clase SaveFileDialog
3.3 Clase FolderBrowserDialog
4. Práctica: Código C#
5. Descarga Solución Visual Studio 2013
6. Conclusiones
7. Glosario
8. Literatura & Enlaces
0. Introducción
En las aplicaciones con interfaz gráfica de usuario es común encontrarnos con diálogos para la apertura, selección, y guardado de archivos. En esta receta estudiáremos las clases disponibles en .NET Framework para ejecutar las operaciones mencionadas. Creamos un proyecto de WinForms en Visual Studio 2013 para hacer la demostración de uso de estos diálogos comunes.
1. Problema
Necesitamos un mecanismo estándar para abrir y guardar archivos que haga uso de los diálogos comunes de Windows dispuestos para estas tareas.
2. Solución
Con estas clases
- OpenFileDialog,
- SaveFileDialog, y
- FolderBrowserDialog
podemos mostrar un diálogo para abrir y guardar archivos, y seleccionar directorios. Estas clases cuentan con el método ShowDialog para mostrar el diálogo correspondiente, determinar si el usuario ha decidido aceptar la operación o cancelarla, y recuperar los archivos o directorios seleccionados.
3. Discusión de la Solución
En el namespace System.Windows.Forms encontramos las clases para mostrar diálogos de selección de archivos y directorios, y de guardado de archivos.
Todas estas clases heredan de la clase abstract CommonDialog [3] (esta clase está diseñada para ser la clase base para todas las implementaciones de diálogos en Windows.)
3.1 Clase OpenFileDialog
La clase OpenFileDialog [4] representa un diálogo para la apertura de archivos. La selección del usuario puede ser obtenida a través de la propiedad FileName. Cuando la propiedad Multiselect está habilitada (true) podemos obtener los archivos seleccionados a través de la colección (propiedad) FileNames.
3.2 Clase SaveFileDialog
A través de la clase SaveFileDialog [5] podemos solicitar al usuario seleccionar una ruta para guardar un archivo. Para advertir al usuario de un intento de sobreescritura de un archivo existente, podemos asignar true a la propiedad OverwritePrompt con el cual mostramos un diálogo de confirmación o de cancelación.
Continuando, con la propiedad Filter [6] establecemos los formatos de archivo permitidos de guardado. (Esta propiedad también está disponible para OpenFileDialog y cumple el mismo objetivo.)
3.3 Clase FolderBrowserDialog
Con FolderBrowserDialog [7] solicitamos al usuario la selección de un directorio. Una vez el usuario haga la selección, la ruta es obtenida por medio de la propiedad SelectedPath.
4. Práctica: Código C#
Crearemos un proyecto WinForms para demostrar las capacidades de las clases estudiadas en la sección anterior.
Respecto al evento btnAbrir_Click(object, EventArgs):
- Línea 23: Creación de un objeto OpenFileDialog para permitir al usuario abrir un archivo.
- Línea 25: Especificación de los tipos de archivos permitidos para apertura.
- Línea 27: Validación de la existencia del archivo antes de intentar abrirlo.
- Línea 29: Ruta inicial en el diálogo de apertura.
- Línea 32: Comprobación de la selección del usuario.
- Línea 34: Invocamos el método LoadFile de RichTextBox para abrir el archivo seleccionado por el usuario.
Las operaciones para el evento btnGuardar_Click(object, EventArgs) son análogos a las descritas anteriormente.
5. Descarga Solución Visual Studio 2013
Descarga de recursos:
6. Conclusiones
Hemos aprendido que .NET Framework cuenta con las clases para la creación de diálogos de apertura guardado útiles para nuestras aplicaciones que gestionan archivos y directorios. La facilidad de uso de estas clases son demostración del nivel de abstracción que brinda este Framework a los programadores de aplicaciones gráficas.
En la próxima receta C# aprenderemos a usar un medio de almacenamiento aislado.
7. Glosario
- Archivo
- Diálogo
- Directorio
- Visual Studio
8. Literatura & Enlaces
[1]: Visual C# 2010 Recipes by Allen Jones and Adam Freeman. Copyright 2010 Allen Jones and Adam Freeman, 978-1-4302-2525-6.[2]: System.Windows.Forms Namespace () - https://msdn.microsoft.com/en-us/library/system.windows.forms(v=vs.110).aspx
[3]: CommonDialog Class (System.Windows.Forms) - https://msdn.microsoft.com/en-us/library/system.windows.forms.commondialog(v=vs.110).aspx
[4]: OpenFileDialog Class (System.Windows.Forms) - https://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog(v=vs.110).aspx
[5]: SaveFileDialog Class (System.Windows.Forms) - https://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog(v=vs.110).aspx
[6]: FileDialog.Filter Property (System.Windows.Forms) - https://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.filter(v=vs.110).aspx
[7]: FolderBrowserDialog Class (System.Windows.Forms) - https://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog(v=vs.110).aspx
V
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.