C# 向循环中的listview添加项

C# 向循环中的listview添加项,c#,listview,C#,Listview,我对listview有问题。我不知道如何使用循环来填充项目。下面的代码适用于第一行,我认为我需要增加该行,但我不确定如何增加。当列表包含多个条目时,我会收到错误消息: 无法比较数组中的两个元素 foreach(列表中的列表l) { ListViewItem项=新的ListViewItem(l[0]); 项目.子项目.添加(l[1]); 项目.子项目.添加(l[2]); 项目.子项目.添加(l[3]); 项目.子项目.添加(l[4]); lstBooks.Items.Add(item); } 下

我对listview有问题。我不知道如何使用循环来填充项目。下面的代码适用于第一行,我认为我需要增加该行,但我不确定如何增加。当列表包含多个条目时,我会收到错误消息:

无法比较数组中的两个元素

foreach(列表中的列表l)
{
ListViewItem项=新的ListViewItem(l[0]);
项目.子项目.添加(l[1]);
项目.子项目.添加(l[2]);
项目.子项目.添加(l[3]);
项目.子项目.添加(l[4]);
lstBooks.Items.Add(item);
}
下面是整个函数。我最初对列表有一个问题,但在这里解决了

视图设置为“详细信息”

    private void ListBooks()
    {
        lstBooks.Items.Clear();
        lstBooks.Columns.Clear();
        lstBooks.Visible = true;

        List<List<string>> list = db.ListDetailsByGenre();
        lstBooks.Columns.Add("Title", 120);
        lstBooks.Columns.Add("Author", 120);
        lstBooks.Columns.Add("Library", 120);
        lstBooks.Columns.Add("Genre", 120);



     foreach (List<string> l in list)

            ListViewItem item = new ListViewItem(l[0]);
            item.SubItems.Add(l[1]);
            item.SubItems.Add(l[2]);
            item.SubItems.Add(l[3]);
            item.SubItems.Add(l[4]);
            lstBooks.Items.Add(item);

        }

    }
private void ListBooks()
{
lstBooks.Items.Clear();
lstBooks.Columns.Clear();
lstBooks.Visible=true;
List=db.ListDetailsByGenre();
添加(“标题”,120);
lstBooks.Columns.Add(“作者”,120);
lstBooks.Columns.Add(“Library”,120);
增加(“流派”,120);
foreach(列表中的列表l)
ListViewItem项=新的ListViewItem(l[0]);
项目.子项目.添加(l[1]);
项目.子项目.添加(l[2]);
项目.子项目.添加(l[3]);
项目.子项目.添加(l[4]);
lstBooks.Items.Add(item);
}
}

我创建了以下测试,没有出现错误

        List<List<string>> list = new List<List<string>>();

        list.Add(new List<string> { "1a", "1b", "1c", "1d", "1e" });
        list.Add(new List<string> { "2a", "2b", "2c", "2d", "2e" });
        list.Add(new List<string> { "3a", "3b", "3c", "3d", "3e" });
        list.Add(new List<string> { "4a", "4b", "4c", "4d", "4e" });
        list.Add(new List<string> { "5a", "5b", "5c", "5d", "5e" });

        foreach (List<string> l in list)
        {
            ListViewItem item = new ListViewItem(l[0]);
            item.SubItems.Add(l[1]);
            item.SubItems.Add(l[2]);
            item.SubItems.Add(l[3]);
            item.SubItems.Add(l[4]);
            lstBooks.Items.Add(item);
        }
List List=新列表();
添加(新列表{“1a”、“1b”、“1c”、“1d”、“1e”});
添加(新列表{“2a”、“2b”、“2c”、“2d”、“2e”});
添加(新列表{“3a”、“3b”、“3c”、“3d”、“3e”});
增加(新名单{“4a”、“4b”、“4c”、“4d”、“4e”});
增加(新名单{“5a”、“5b”、“5c”、“5d”、“5e”});
foreach(列表中的列表l)
{
ListViewItem项=新的ListViewItem(l[0]);
项目.子项目.添加(l[1]);
项目.子项目.添加(l[2]);
项目.子项目.添加(l[3]);
项目.子项目.添加(l[4]);
lstBooks.Items.Add(item);
}
有几点:

  • 问题可能在
    列表的结构/数据中
    -请提供
    列表
    内容的示例

  • Add
    方法只是将ListViewItem添加到ListView的Items集合的末尾,因此不需要增加行数

  • 它可能不适用于此处,但您可能希望或需要在填充ListView之前清除ListView中的现有项:
    lstBooks.items.clear()

其他哪些listview属性可能会从默认值更改,以及在什么时候出现错误?

foreach(列表中的列表l)
     foreach (List<string> l in list)

        ListViewItem item = new ListViewItem(l[0]);
        item.SubItems.Add(l[1]);
        item.SubItems.Add(l[2]);
        item.SubItems.Add(l[3]);
        item.SubItems.Add(l[4]);
        lstBooks.Items.Add(item);

    }
ListViewItem项=新的ListViewItem(l[0]); 项目.子项目.添加(l[1]); 项目.子项目.添加(l[2]); 项目.子项目.添加(l[3]); 项目.子项目.添加(l[4]); lstBooks.Items.Add(item); }

您的foreach后面缺少一个{(列表中的列表l)当你上传了大部分代码,但没有显示函数本身时。

他的代码看起来不错,你做了什么更改?只是OP没有完成他的问题。@Sanjee-foreach循环没有改变。我只是通过创建一个要测试的列表来填充
list
。它在到达循环之前被清除。Th第一个循环工作得很好,但是第二个循环崩溃了。我必须退出一段时间,但是当我回来时会提供更多的代码。我一直试图添加完整的函数,但它一直消失。我做错了什么??
     foreach (List<string> l in list)

        ListViewItem item = new ListViewItem(l[0]);
        item.SubItems.Add(l[1]);
        item.SubItems.Add(l[2]);
        item.SubItems.Add(l[3]);
        item.SubItems.Add(l[4]);
        lstBooks.Items.Add(item);

    }