迭代地将ListViewItems添加到多个列

时间:2015-11-18 12:51:03

标签: c# winforms listview

我有一个ListView,在设计视图中指定了两列,我正在尝试将两个记录列表添加到各自的列中,但我很难将列表放在正确的位置。

我尝试了几种方法,并且最接近这一点:

listViewFilterDescription.View = View.Details;

ListViewItem item1 = new ListViewItem();
for (int i = 0; i < recordSet.Rows.Count; i++)
{
    item1.SubItems.Add(recordSet.Rows[i]["description"].ToString());
}

ListViewItem item2 = new ListViewItem();
for (int i = 0; i < recordSet.Rows.Count; i++)
{
    item2.SubItems.Add(recordSet.Rows[i]["definition"].ToString());
}

listViewFilterDescription.Items.AddRange(new ListViewItem[] { item1, item2 });

虽然这会将for循环的所有内容添加到两个ListViewItems,但它实际上只将每个循环的第一条记录添加到ListView,并且只将它添加到第二列:

Column 1  |Column 2
==========|==========
          |ForLoop1(1)
          |ForLoop2(1)

我怎么能让它看起来像这样?:

Column 1     |Column 2
=============|=============
ForLoop1(1)  |ForLoop2(1)
ForLoop1(2)  |ForLoop2(2)
ForLoop1(3)  |ForLoop2(3)

2 个答案:

答案 0 :(得分:0)

您可以尝试这种方法来查看是否能够以数组格式添加项目。感谢

//首先添加列

    listViewFilterDescription.Columns.Add("Id");
    listViewFilterDescription.Columns.Add("Name");

//将项目[]添加到列表中

var item1 = new ListViewItem(new[] {"Car", "Boat", "AirPlane"});
var item2 = new ListViewItem(new[] {"Sheila", "Catherine", "Franz"});
listViewFilterDescription.Items.Add(item1);
listViewFilterDescription.Items.Add(item2);

OR 
    ListViewItem[] item = {item1,item2}; 
    for(int i=0;i<2;i++){ ListViewItem myItem = item[i];
    listViewFilterDescription.Items.AddRange(new ListViewItem[] { myItem}); }    

答案 1 :(得分:0)

在第一个循环的第一列添加项目时,这不能解决您的问题,但这会产生您想要的相同输出

  for (int i = 0; i < recordSet.Rows.Count; i++)
    {
        ListViewItem item1 = item1.SubItems.Add(recordSet.Rows[i]["description"].ToString());
        item1.SubItems.Add(recordSet.Rows[i]["definition"].ToString());
        listViewFilterDescription.Items.Add(lvi);
    }