在循环中将项添加到listview

时间:2011-03-26 08:39:20

标签: c# listview

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

  

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

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);
}

下面是整个功能。我最初对列表有问题,但在populating a list of a list of strings but

解决了问题

视图设置为详细信息

    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);

        }

    }

2 个答案:

答案 0 :(得分:1)

     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);

    }

当您上传代码的较大部分但未显示函数本身时,您错过了{foreach(列表中的列表l)之后的{。

答案 1 :(得分:0)

我创建了以下测试,没有发生错误。

        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内容的示例。

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

  • 这可能不适用于此处,但您可能需要或需要在填充之前清除ListView中的现有项目:lstBooks.Items.Clear();

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