OpenFileDialog FileNames

时间:2017-05-15 09:17:41

标签: c# filenames openfiledialog

我正在尝试使用OpenFileDialog.FileNames存储XML并将其添加到我的数组中。没有数据添加到阵列中。请帮帮我。

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

感谢您的帮助

4 个答案:

答案 0 :(得分: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?

答案 1 :(得分:0)

因为您要为数组指定string。你应该做这样的smoething:

fileNames[i] = file;
i++;

或使用List<T>并使用Add方法。在您的情况下,这种方法会更好。

答案 2 :(得分:0)

在这种情况下,数组不适合使用list或arraylist或任何其他有能力在末尾添加元素的数组。

声明数组不需要。要存储在该数组中的元素

string[] files = new string[5];

这里你可以在该数组中保存最多5个字符串,但在你的情况下,它可以增长,所以数组不合适。

但如果是列表,则会像

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

filenames.Add("my file")

因此,打开文件对话框后,您可以执行

filenames.Add(file.FileName);

答案 3 :(得分:0)

ofd.ShowDialog();

应该追求

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