2009-08-21 79 views
23

我试图用FileNames而不是FileName一次打开多个文件。但是我无法在任何地方看到有关如何完成此任务的示例,甚至在MSDN上也没有。据我所知 - 也没有关于它的文件。有没有人做过?打开多个文件(OpenFileDialog,C#)

回答

58

您必须将OpenFileDialog.Multiselect属性值设置为true,然后访问OpenFileDialog.FileNames属性。

检查该样本

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); 
      } 
     } 
    }