在ListView中获取每行的项目以标记c#

时间:2017-05-18 13:55:21

标签: c# visual-studio-2010 listview

我尝试创建收据,问题是如何将ListView中每行的文字或项目标记为。

这是我试过的

private void button8_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    foreach (ListViewItem itemRow in this.listView1.Items)
    {
        {
            frm2.label1.Text = itemRow.SubItems[0].Text;
            frm2.label2.Text = itemRow.SubItems[1].Text;
            frm2.label3.Text = itemRow.SubItems[2].Text;
            frm2.label4.Text = itemRow.SubItems[3].Text;
            frm2.Show();
        }
    }
} 

3 个答案:

答案 0 :(得分:1)

您需要在列表中执行两个循环。我已将结果添加到数组中,但您可以使用收集的数据执行任何操作。如果您尝试在某些标签上进行排列,可以使用以下代码。

int x;
foreach (ListViewItem itemRow in this.listView1.Items)
{   
    x = 1;
    switch(x)
    {
        case 1:
        {
           for (int i = 0; i < itemRow.SubItems.Count; i++)
           {
                 frm2.label1.Text = itemRow.SubItems[i].Text;
                 frm2.label2.Text = itemRow.SubItems[i].Text;
                 frm2.label3.Text = itemRow.SubItems[i].Text;
                 frm2.label4.Text = itemRow.SubItems[i].Text;
           }
         }
         case 2:
         {
           for (int i = 0; i < itemRow.SubItems.Count; i++)
           {
                 frm2.label5.Text = itemRow.SubItems[i].Text;
                 frm2.label6.Text = itemRow.SubItems[i].Text;
                 frm2.label7.Text = itemRow.SubItems[i].Text;
                 frm2.label8.Text = itemRow.SubItems[i].Text;
           }
         }
    x++;

    }
}

答案 1 :(得分:0)

    List<object> myListOfSubItems = new List<object>();

    foreach (ListViewItem item in ListView1.Items)
    {
        myListOfSubItems.AddRange(item.SubItems);
    }

答案 2 :(得分:0)

我试过这个并且它有效,但是如果第二行没有项目则会触发错误

frm2.label2.Text = listView1.Items[0].SubItems[1].Text; frm2.label3.Text = listView1.Items[1].SubItems[0].Text;