2017-05-18 14 views
1

我正在嘗試創建收據,而我的問題是如何獲取ListView中標籤的每行文本或項目。ListView中的每行獲取項目以標籤c#

這就是我想

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(); 
     } 
    } 
} 
+0

它的工作原理或不? – Coding4Fun

+0

它的作品,但我如何獲得第二行?或所有行 – Magillanica

+0

是的,您的代碼需要改進。如果listView1有多個元素,每個迭代在你的foreach中,你會覆蓋你的標籤文本 – Coding4Fun

回答

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

    } 
} 
+0

謝謝,但是,我如何設置文本來標記每個'SubItems'?並在第二行獲得'SubItems'並將文本設置爲標籤? – Magillanica

+0

如果你想把它安排在某些標籤上,你可以使用更新的代碼 – Jelani

+0

它只設置文本'SubItem [1]'是因爲我添加了一些'break;'?因爲我得到了一個沒有中斷的錯誤 – Magillanica

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

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

謝謝,但我認爲我不能使用這個代碼對我來說太高級了LOL – Magillanica

0

我想這和它的工作,但是如果第二排沒有項目就觸發一個錯誤

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

相關問題