将数字添加到现有列表视图行C#

时间:2017-02-02 10:39:39

标签: c# listview

我想在listview的每一行添加数字。

现在我计算一个文件夹中有多少文件,将该数字添加到字符串数组中。然后使用for循环,我将一个数字添加到此数组并添加元素到 列表视图。

但是号码仅添加到第一行。 enter image description here

代码:

int countFile = Directory.GetFiles(saveAnimePath + "\\Watching", "*.txt").Length;

                string[] filesCount = new string[countFile];

                int number = 0;
                for (int i = 0; i < filesCount.Length; i++)
                {
                    number = number + 1;
                    filesCount[i] = number.ToString();
                }

                foreach (var item in filesCount)
                {
                    lvWatching.Items[0].Text = item;
                }

如何为每行添加数字?

2 个答案:

答案 0 :(得分:1)

问题在于,在最后一个foreach语句中,您只编辑ListView中的第一个项目。

而不是foreach,尝试使用for,类似的东西:

for (var i = 0; i++; i < filesCount)
{
    lvWatching.Items[i].Text = filesCount[i];
}

修改

但我认为你的方法开销很大。 假设在列表中显示目录中的所有文件,则无需再次获取它们,获取计数,分配数字等。 您可以遍历列表项并分配正确的数字。

整个&#34;分配号码操作&#34;会是这样的:

for (var i = 0; i++; i < lvWatching.Items.Length)
{
    lvWatching.Items[i].Text = i.ToString();
}

但我可能会遗漏一些东西,所以它无法在任何情况下都有效。

答案 1 :(得分:1)

您需要在lvWatching.Items[0].Text = item;

中为每次互动更改项目的行

例如:

    int countFile = Directory.GetFiles(saveAnimePath + "\\Watching", "*.txt").Length;

    int number = 0;
    for (int i = 0; i < filesCount.Length; i++)
    {
      number = number + 1;
      lvWatching.Items[i].Text = number.ToString();
    }