2017-05-15 62 views
-1

我想存儲使用OpenFileDialog.FileNames的XML並將其添加到我的數組中。沒有數據被添加到數組中。請你幫我解決。OpenFileDialog FileNames

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Windows.Forms; 

    namespace WindowsFormsApplication1 
    { 
     public partial class Form1 : Form 
     { 
      String[] fileNames; 
      public Form1() 
      { 
       InitializeComponent(); 
      } 

      public void button1_Click(object sender, EventArgs e) 
      { 

       OpenFileDialog ofd = new OpenFileDialog(); 
       ofd.ShowDialog(); 
       ofd.Multiselect = true; 
       ofd.Filter = "XML Files (*.xml)|*.xml"; 

       foreach (String file in ofd.FileNames) 
       { 
        MessageBox.Show(file); 
        fileNames = file; // Here is where I am getting stuck 
       } 

      } 

      private void button2_Click(object sender, EventArgs e) 
      { 
       BackEndCode bec = new BackEndCode(); 
       bec.backCode(fileNames); 
      } 
     } 
    } 

謝謝您的幫助

回答

1

我會建議使用List<string>代替string[] - 你不知道文件的用戶將選擇的數量。

 ..........    
     List<string> fileNames; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     public void button1_Click(object sender, EventArgs e) 
     { 
      fileNames = new List<string>(); 
      OpenFileDialog ofd = new OpenFileDialog(); 
      ofd.ShowDialog(); 
      ofd.Multiselect = true; 
      ofd.Filter = "XML Files (*.xml)|*.xml"; 

      foreach (String file in ofd.FileNames) 
      { 
       MessageBox.Show(file); 
       fileNames.Add(file); //<- try this instead 
      } 

     } 
     .................. 

也可以考慮加入using (OpenFileDialog ofd = new OpenFileDialog())

What is the C# Using block and why should I use it?

0

因爲你assigining string到一個數組。你應該這樣做smoething這樣的:

fileNames[i] = file; 
i++; 

或使用List<T>和利用Add方法。這種方法在你的情況下會更好。

+0

謝謝Michal :) –

0

在這種情況下,數組不適用於使用list或arraylist或其他任何能夠在最後添加元素的元素。

聲明數組不需要。元素你想要的陣列

string[] files = new string[5]; 

在這裏你可以節省高達數組中的5串,但在你的情況下,它可以長得這麼陣列是不恰當的存儲。

但在列表的情況下,它會像

List<String> filenames = new List<String>(); 

filenames.Add("my file") 

所以打開打開文件對話框後,你可以做

filenames.Add(file.FileName); 
+0

推薦'ArrayList'除非這個人使用的是C#的一個非常舊的版本,否則這是不好的... – ErikE

0
ofd.ShowDialog(); 

應該去後

ofd.Filter = "XML Files (*.xml)|*.xml";