Como usar OpenFileDialog en WPF
Bienvenid@ lector/a, En esta nueva entrada veremos cómo mostrar y configurar el componente OpenFileDialog, el cual es un cuadro de dialogo pre configurado. El componente OpenFileDialog permite al usuario examinar todas las carpetas de su equipo o de cualquier equipo de la red con la posibilidad de seleccionar uno o más archivos para abrirlos. Este cuadro de diálogo devuelve la ruta de acceso y el nombre del o los archivos que se seleccionó.
Imagen 1: Dialogo emergente de archivos
Existen dos formas en los que se puede implementar este
elemento. En primer lugar este componente puede abrir un archivo a la vez y en
segundo lugar este puede abrir más de un archivo a la vez.
Cabe destacar que cuando se configura para que pueda abrir múltiples
archivos estas rutas se almacenan en un arreglo unidimensional, esto no pasa
cuando se utiliza con la configuración por defecto que tiene ya que la configuración
default solo permite traer un archivo es decir solo almacena una ruta de
archivo.
En la imagen 2 se puede apreciar el diseño que implementare
para ejemplificar el funcionamiento de ambas opciones de configuración de
elemento OpenFileDialog
Imagen 2: Interfaz de prueba.
En primer lugar el componente OpenFileDialog siempre estará relacionado con algún evento
proveniente de un botón u otro evento que el usuario desee.
Al configurar los elementos se le pueden aplicar algunos
otras propiedades como la de un filtro por extensiones, lo cual facilita mucho más
la búsqueda de archivos. En la Imagen 3 se puede apreciar que se implementa un
filtro básico que luego en la búsqueda de archivos se extiende para que se
pueda buscar por cada extensión.
Imagen 3: Filtro básico de la aplicación.
Imagen 4: Filtro aplicado por código.
Inicialización de los filtros, estos son variables globales que se implementaran más adelante en el cogido.
1: String[] seleccion = { "Ningun", "Por Imagen", "Por texto", "Por video" };
2: String[] filtro = { "","Todas las imagenes|*jpg;*png;*bmp|JPG|*jpg|PNG|*png|BMP|*bmp",
3: "Todos los textos|*txt;*doc;*docx;*xls|TXT|*txt|DOC|*doc;*docx|XLS|*xls",
4: "Todos los videos|*mp4;*avi;*mpeg;*mov;*wmv;*flv|MP4|*mp4|AVI|*avi|MPEG|*mpeg|MOV|*mov|WMV|*wmv|FLV|*flv"
5: };
Método que carga solo un archivo, en este fragmente se aprecia que se le puede aplicar un filtro como no. El IF que pregunta si "el_filtro" es diferente (!=) de 0, quiere decir que el Combobox tiene un elemento seleccionado diferente a "Nigun"
1: private void btn_dlg_UN_Click(object sender, RoutedEventArgs e)
2: {
3: OpenFileDialog dlg1 = new OpenFileDialog();
4: int el_filtro = filtro1.SelectedIndex;
5: if (el_filtro != 0)
6: dlg1.Filter = filtro[el_filtro];
7: //Console.WriteLine("Aplicando filtro"+ filtro[el_filtro]);//
8: if (dlg1.ShowDialog() == true) {
9: this.txt_UN.AppendText(dlg1.FileName);
10: }
11: }
De igual modo con el anterior al método donde se configura para múltiples archivos varia muy poco, como por ejemplo en la opción "Mutiselect" se deja como "true" para que se puedan seleccionar más de una elemento. Al igual que el anterior es posible aplicarle un filtro.
Lo diferente de esto es que en vez de solo retornar un solo elemento este devuelve un arreglo de elementos y para poder capturarlos a todos se hace a través de un Loop en este caso un foreach, donde se despeja el nombre sin la extensión mediante System.IO.Path.GetFileNameWithoutExtension(
1: private void btn_dlg_MUL_Click(object sender, RoutedEventArgs e)
2: {
3: OpenFileDialog dlg2 = new OpenFileDialog();
4: dlg2.Multiselect = true;
5: int el_filtro = filtro2.SelectedIndex;
6: if (el_filtro != 0)
7: dlg2.Filter = filtro[el_filtro];
8: //Console.WriteLine("Aplicando filtro"+ filtro[el_filtro]);//
9: /*Si lo utilizas con Windows Form el if condicional se cambia por
10: if(dlg2.ShowDialog() == DialogResult.OK){}
11: */
12: if (dlg2.ShowDialog() == true)
13: {
14: foreach (String s in dlg2.FileNames)
15: {
16: String nombre = System.IO.Path.GetFileNameWithoutExtension(s);
17: this.txt_MUL.AppendText(string.Format("\n---\nNombre:{0}\nRuta:{1}",nombre,s));
18: }
19: }
20: }
Puedes descargar el ejemplo desde el siguiente LINK
Este sitio fue creado en primera instancia como un lugar donde ir acumulando información y/o apuntes que considere de utilidad para un futuro cercano, pero a medida que ha avanzado el tiempo este lugar se a vuelto un punto de encuentro para muchas personas que se están iniciando en el mundo de la programación, es por eso que si estás leyendo esto estas invitado a participar en de esta comunidad que día a día va creciendo. Si estás dispuesto a cooperar te sugiero que dejes tus inquietudes, dudas o aportes en la caja de comentario de cualquiera de las entradas del blog o haciendo directamente desde el formulario de contacto que puede encontrar en la página de inicio y responderé a la brevedad.
Comentarios
Publicar un comentario
Deja tus comentario