我正在尝试使用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);
}
}
}
感谢您的帮助
答案 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())
答案 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";