2017-05-18 4 views
1

J'essaie de créer un reçu et mon problème est de savoir comment obtenir le texte ou l'élément par ligne dans ListView pour étiqueter.Obtenir des éléments par ligne dans ListView pour étiqueter C#

C'est ce que j'ai essayé

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

cela fonctionne ou non? – Coding4Fun

+0

cela fonctionne mais comment puis-je obtenir la deuxième rangée? ou toutes les lignes – Magillanica

+0

Oui, votre code doit être amélioré. Si le listView1 a plus d'un élément, chaque itération dans votre foreach, vous écraserez le texte de vos étiquettes – Coding4Fun

Répondre

1

Vous devez effectuer deux boucles dans la liste. J'ai ajouté les résultats à un tableau, mais vous pouvez faire ce que vous voulez avec les données collectées. Si vous essayez de l'organiser sur certaines étiquettes, vous pouvez utiliser le code ci-dessous.

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

Merci, mais, comment puis-je définir le texte pour marquer chaque 'SubItems'? et obtenez le 'SubItems' dans la deuxième rangée et définissez le texte à étiqueter aussi? – Magillanica

+0

Si vous essayez de l'agencer sur certaines étiquettes, vous pouvez utiliser le code mis à jour – Jelani

+0

en ne définissant que le texte 'SubItem [1]' parce que j'ajoute un 'break;'? parce que j'ai eu une erreur sans pause – Magillanica

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

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

Merci, mais je ne peux pas utiliser ce code trop avancé pour moi LOL – Magillanica

0

J'ai essayé et cela a fonctionné, mais si la deuxième rangée a aucun élément, il déclenche une erreur

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