2009-08-21 75 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); 
      } 
     } 
    }