我对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);
}
}
答案 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属性可能会从默认值更改,以及在什么时候出现错误?