0

我想找到所有扩展名为.xls的文件并将文件名打印到组合框中。当我运行我的程序时,组合框为空,但调试器显示文件数组列表的计数为 4。

这就是我所拥有的:

private void Form1_Load(object sender, EventArgs e)
{
    ArrayList files = new ArrayList();

    files.AddRange(System.IO.Directory.GetFiles("c:\\test", "*.xls"));

    comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

    foreach (int i in files)
    {
        comboBox1.Items.Add(i);
    }

    comboBox1.SelectedIndex = 0;
}
4

5 回答 5

2

首先,您的代码不起作用,因为System.IO.Directory.GetFiles没有返回integers您在foreach循环中枚举的内容。

其次,如果要保留代码,请将其修改为:

foreach (var i in files)
{
   comboBox1.Items.Add(i.ToString());
}

第三,可以写出更优雅更方便的代码:

  var files = System.IO.Directory.GetFiles("c:\\test", "*.xls");
  comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
  comboBox1.Items.AddRange(files);
  comboBox1.SelectedIndex = 0;
于 2013-09-24T19:32:38.927 回答
0

尝试这个:

    foreach (FileInfo file in files)
    {
        comboBox1.Items.Add(file.Name);
    }
于 2013-09-24T19:31:56.173 回答
0
     ArrayList files = new ArrayList();

    files.AddRange(System.IO.Directory.GetFiles("c:\\test", "*.xls"));

    comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

    foreach (string i in files)
    {
        comboBox1.Items.Add(i);
    }

    comboBox1.SelectedIndex = 0;
于 2013-09-24T19:32:30.943 回答
0

我不习惯 ArrayList,但我相信它包含字符串而不是整数。

您应该将 foreach 更改为:

foreach(string file in files)
    comboBox1.Items.Add(i);

但是,您可以简单地这样做:

comboBox1.Items.AddRange(Directory.GetFiles("C:\\test", "*.xls"));

祝你的任务好运。

于 2013-09-24T19:32:52.227 回答
0

Directory.GetFiles返回一个字符串数组。不是整数。所以你循环并没有找到任何项目。

foreach (string file in files)
{
    comboBox1.Items.Add(file);
}
于 2013-09-24T19:33:31.710 回答