返回数组的所有索引

时间:2013-12-30 13:51:05

标签: c# .net winforms

我有一个非常基本的WinForms应用程序,用于搜索用户选择的指定文件夹中的文件数。选择文件夹后,文件夹中将指定此文件夹中的文件数。我的部分代码如下所示:

string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
txbNumberOfFiles.Text = files.Length.ToString();

现在这个工作正常,它会在找到所有文件后显示文本框中的文件数。但是,我想要的是文本框,以便在数组大小增加时显示数组的索引。所以它先是1然后是2然后是3等等。然后一旦处理完成,最后一个数字将是找到的文件总数。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

您可以将foreach与计数器变量一起使用。这是解决方案之一,但不是最好的

        folderBrowserDialog1.ShowDialog();
        string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath);

        int count = 1;
        foreach (var item in files)
        {
            textBox1.Text = textBox1.Text + " " + count.ToString();
            count++;
        }

答案 1 :(得分:0)

使用此

textboxControl.Text = String.Join(" ", Enumerable.Range(1, files.Length));

对于files.Length = 10,它将生成

1 2 3 4 5 6 7 8 9 10

答案 2 :(得分:0)

如果我理解正确,你可以使用这样的东西:

首先添加一个Timer:

Timer tm = new Timer(); // define in it class level,in the top of your code

在表单中加载设置属性:

tm.Enabled = true;
tm.Interval = 1000;
tm.Tick += timer1_Tick;

处理Tick事件:

 private int i = 0;
    private void timer1_Tick(object sender, EventArgs e)
    {
        textBox1.Text = String.Format("File {0}: {1}", i+1, files[i]);
        i++;
        if (i == files.Length)
        {
            textBox1.Text == "Total Files: " + i;
            tm.Stop();
        }
    }

然后当您加载文件时启动计时器:

string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
tm.Start();