2009-08-21 30 views
23

Estoy tratando de abrir varios archivos a la vez con OpenFileDialog, usando FileNames en lugar de FileName. Pero no veo ejemplos en ningún lugar sobre cómo lograr esto, ni siquiera en MSDN. Por lo que puedo decir, tampoco hay documentación sobre eso. ¿Alguien ha hecho esto antes?Abrir varios archivos (OpenFileDialog, C#)

Respuesta

58

Debe establecer el valor de la propiedad OpenFileDialog.Multiselect en verdadero y luego acceder a la propiedad OpenFileDialog.FileNames.

Comprobar esta muestra

private void Form1_Load(object sender, EventArgs e) 
{ 
    InitializeOpenFileDialog(); 
} 

private void InitializeOpenFileDialog() 
{ 
    // Set the file dialog to filter for graphics files. 
    this.openFileDialog1.Filter = 
     "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" + 
     "All files (*.*)|*.*"; 

    // Allow the user to select multiple images. 
    this.openFileDialog1.Multiselect = true; 
    //     ^^^^^^^

    this.openFileDialog1.Title = "My Image Browser"; 
} 

private void selectFilesButton_Click(object sender, EventArgs e) 
{ 
    DialogResult dr = this.openFileDialog1.ShowDialog(); 
    if (dr == System.Windows.Forms.DialogResult.OK) 
    { 
     // Read the files 
     foreach (String file in openFileDialog1.FileNames) 
     { 
      // Create a PictureBox. 
      try 
      { 
       PictureBox pb = new PictureBox(); 
       Image loadedImage = Image.FromFile(file); 
       pb.Height = loadedImage.Height; 
       pb.Width = loadedImage.Width; 
       pb.Image = loadedImage; 
       flowLayoutPanel1.Controls.Add(pb); 
      } 
      catch (SecurityException ex) 
      { 
       // The user lacks appropriate permissions to read files, discover paths, etc. 
       MessageBox.Show("Security error. Please contact your administrator for details.\n\n" + 
        "Error message: " + ex.Message + "\n\n" + 
        "Details (send to Support):\n\n" + ex.StackTrace 
       ); 
      } 
      catch (Exception ex) 
      { 
       // Could not load the image - probably related to Windows file system permissions. 
       MessageBox.Show("Cannot display the image: " + file.Substring(file.LastIndexOf('\\')) 
        + ". You may not have permission to read the file, or " + 
        "it may be corrupt.\n\nReported error: " + ex.Message); 
      } 
     } 
    }