2010-12-06 49 views
0

bonjour j'ai le code suivant qui me permet d'afficher les e-mails dans ma boîte de réception sur un contrôle de vue liste et afficher le corps corrospoding dans un rtb ma question est là une meilleure façon de gérer ces données afficher que la manière ci-dessous im assez nouveau pour C# et donc des réponses détaillées seraient trèsMeilleur moyen d'afficher les e-mails C# winforms

ps im en utilisant le composant chilkat imap pour gérer le côté serveur si les choses Merci à l'avance

Chilkat.MessageSet msgSet = imap.Search("ALL", true); 
     bundle = imap.FetchBundle(msgSet); 

     Chilkat.Email email; 
     int i; 
     for (i = 0; i < bundle.MessageCount - 0; i++) 
     { 
      email = bundle.GetEmail(i); 

      System.Windows.Forms.ListViewItem itmp = new System.Windows.Forms.ListViewItem(email.From); 
      System.Windows.Forms.ListViewItem.ListViewSubItem itms1 = new System.Windows.Forms.ListViewItem.ListViewSubItem(itmp, email.Subject); 
      System.Windows.Forms.ListViewItem.ListViewSubItem itms2 = new System.Windows.Forms.ListViewItem.ListViewSubItem(itmp, email.FromName); 


      itmp.SubItems.Add(itms1); 
      itmp.SubItems.Add(itms2); 

      listView1.Items.Add(itmp).Tag = i; 



      richTextBox1.Text = email.Body; 





     } 

     // Save the email to an XML file 
     bundle.SaveXml("email.xml"); 

code mis à jour

Chilkat.MessageSet msgSet = imap.Search("ALL", true); 
     bundle = imap.FetchBundle(msgSet); 

     Chilkat.Email email; 
     int i; 
     for (i = 0; i < bundle.MessageCount; i++) 
     { 
      email = bundle.GetEmail(i); 

      string[] row = new string[]{email.From, 
                email.Subject,email.FromName}; 


      object[] rows = new object[] { row }; 
      foreach (string[] rowArray in rows) 
      { 
       listView1.Rows.Add(rowArray); 
      } 
+0

"ma question est là une meilleure façon de manipuler ces données et l'afficher que la voie ci-dessous" - ce qui définit «mieux»? –

+0

Eh bien je voulais changer d'utiliser une vue de liste à l'aide d'une vue de grille de données ou quelque chose comme ça, mais ils ne fonctionneront pas avec le code ci-dessus – Shane121

Répondre

0

Je pense, vous faites correct seul petit point de

Put a null check for bundle and email object. 

    for (i = 0; i < bundle.MessageCount - 0; i++) m, why are you substracting 0 from bundle.MessageCount 

votre code est simple et son faire ce qu'il est censé faire, alors pourquoi changer à ce moment.

+0

Merci fera, la raison pour laquelle je voulais le changer est provoquer la vue liste contrôle lui-même très bon et je ne peux pas trouver un différent compnonet pour le remplacer qui a l'air mieux et fonctionne avec le code ci-dessus – Shane121

+0

n'avez-vous pas le contrôle DataGridView ????? – TalentTuner

+0

Oui, mais cela ne fonctionnera pas avec ce code – Shane121