2012-08-24 33 views
10

Obtuve esta aplicación de formularios de Windows C# donde cargo un archivo XML o un archivo CSV para algunas operaciones de tareas. Tengo un botón Examinar. Cuando hago clic en el botón Examinar, aparece el cuadro de diálogo Abrir archivo y puedo navegar a una ubicación en mi disco, elegir el archivo y luego cargarlo usando el botón Cargar. Si cargo un archivo JPG o ZIP o cualquier archivo cuyo formato sea distinto de CSV o XML, mi aplicación falla. ¿Hay alguna forma de limitar el cuadro de diálogo Abrir archivo para abrir solo archivos CSV o XMl solo en C#?Limitar los archivos que se pueden seleccionar usando el cuadro de diálogo Abrir archivo

+0

¿por qué no valida la extensión antes de subir? –

Respuesta

23

uso

openFileDialog.Filter = "CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml"; 

esta manera sólo los archivos CSV o archivos XML se muestran. pero, no obstante, los usuarios también pueden seleccionar otros tipos de archivos si escriben el nombre completo; por lo tanto, verifique el nombre de archivo que se seleccionó y corrija el código en consecuencia.

+0

super one dude :)) – user1501034

+2

También puede combinar filtros para que el usuario pueda ver los archivos csv y xml, así: openFileDialog.Filter = "Archivos de datos | * .csv; *. Xml"; – sventevit

0

Puede usar la propiedad Filter para permitir que el usuario elija un cierto tipo de archivo.

¡Sin embargo! Esto no es una garantia Un usuario aún puede ingresar '(estrella). (Estrella)' en el cuadro de nombre de archivo y mostrar todos los archivos. Por lo tanto, también debe verificar el (los) archivo (s) resultante (s) en su código.

Puede hacerlo con el método Path.GetExtension().

0

Puede aplicar un filtro en su cuadro de diálogo Abrir archivo que solo muestra archivos .xml y csv como se mencionó anteriormente. Con path.getextension http://msdn.microsoft.com/en-us/library/system.io.path.getextension.aspx Puede verificar si el usuario efectivamente seleccionó un archivo con la extensión correcta. Si se selecciona una extensión incorrecta, puede solicitar que se seleccione un archivo diferente.

Recomiendo encarecidamente comprobar la extensión del archivo antes de cargarlo. Simplemente verifique la extensión después de que el usuario haya seleccionado el archivo. Si se seleccionaron los archivos incorrectos, simplemente no continúe la carga/procesamiento ...

0

Esto es ejemplo completo.

/// <summary> 
    /// Select CSV/XML file 
    /// </summary> 
    /// <param name="sender"> 
    /// The sender. 
    /// </param> 
    /// <param name="e"> 
    /// The e. 
    /// </param> 
    private void SelectCsvFile(object sender, EventArgs e) 
    { 
     var dlg = new OpenFileDialog 
         { 
          Filter = @"CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml", 
          CheckFileExists = true, 
          Title = @"Select csv/xml file to read", 
          Multiselect = false 
         }; 
     dlg.ShowDialog(); 
     if (dlg.FileName == string.Empty) 
     { 
      MessageBox.Show(
       @"You didn't select any file !", 
       @"No file was selected", 
       MessageBoxButtons.OK, 
       MessageBoxIcon.Asterisk); 
     } 
     else 
     { 
      this.txtCSVFilePath.Text = dlg.FileName; 
     } 
    } 
Cuestiones relacionadas