2010-11-06 5 views
0

Je suis complètement nouveau sur VB.NET et c'est probablement quelques étapes au-dessus de ma tête, mais j'ai réussi à aller aussi loin avec seulement Google.VB.NET: Arraylist d'objets, Listbox1_SelectedIndexChanged et Linking Values ​​

Je lis un fichier XML et la création d'une liste de tableaux de classes pour les valeurs là-dedans, comme on le voit:

Public Class yresults 
    'Dim xdate As XmlNodeList = xDoc.GetElementsByTagName("Date") 
    'Dim link As XmlNodeList = xDoc.GetElementsByTagName("Link") 
    'Dim category As XmlNodeList = xDoc.GetElementsByTagName("Category") 
    'Dim UserNick As XmlNodeList = xDoc.GetElementsByTagName("UserNick") 
    'Dim numAnswers As XmlNodeList = xDoc.GetElementsByTagName("NumAnswers") 
    'Dim numComments As XmlNodeList = xDoc.GetElementsByTagName("NumComments") 
    'Dim subject As XmlNodeList = xDoc.GetElementsByTagName("Subject") 
    'Dim content As XmlNodeList = xDoc.GetElementsByTagName("Content") 

    Private mystrDate As String 
    Private mystrLink As String 
    Private mystrCat As String 
    Private mystrUser As String 
    Private mystrNA As String 
    Private mystrNC As String 
    Private mystrSubject As String 
    Private mystrContent As String 


    Public Sub New(ByVal strDate As String, ByVal strLink As String, ByVal strCat As String, ByVal strUser As String, ByVal strNA As String, ByVal strNC As String, ByVal strSubject As String, ByVal strContent As String) 
     MyBase.New() 
     Me.mystrDate = strDate 
     Me.mystrLink = strLink 
     Me.mystrCat = strCat 
     Me.mystrUser = strUser 
     Me.mystrNC = strNC 
     Me.mystrNA = strNA 
     Me.mystrSubject = strSubject 
     Me.mystrContent = strContent 

    End Sub 

    Public ReadOnly Property strDate() As String 
     Get 
      Return mystrDate 
     End Get 
    End Property 

    Public ReadOnly Property strLink() As String 
     Get 
      Return mystrLink 
     End Get 
    End Property 

    Public ReadOnly Property strUser() As String 
     Get 
      Return mystrUser 
     End Get 
    End Property 

    Public ReadOnly Property strNA() As String 
     Get 
      Return mystrNA 
     End Get 
    End Property 

    Public ReadOnly Property strNC() As String 
     Get 
      Return mystrNC 
     End Get 
    End Property 

    Public ReadOnly Property strSubject() As String 
     Get 
      Return mystrSubject 
     End Get 
    End Property 

    Public ReadOnly Property strContent() As String 
     Get 
      Return mystrContent 
     End Get 
    End Property 

    Public Structure arc 
     Public strDate As String 
     Public strLink As String 
     Public strCat As String 
     Public strUser As String 
     Public strNA As String 
     Public strNC As String 
     Public strSubject As String 
     Public strContent As String 
    End Structure 

End Class 

et ...

Dim cntr As Integer = 0 

While cntr < link.Count 
    yresults.Add(New Yresults(xdate(cntr).InnerText.ToString, link(cntr).InnerText.ToString, category(cntr).InnerText.ToString, UserNick(cntr).InnerText.ToString, numAnswers(cntr).InnerText.ToString, numComments(cntr).InnerText.ToString, subject(cntr).InnerText.ToString, content(cntr).InnerText.ToString)) 
    cntr += 1 
End While 

Ainsi, le arraylist « yresults "est peuplé avec des classes" yresults ", qui ont des valeurs de strdate, strlink, etc. etc

Comment puis-je parcourir cette liste de tableau, et de comparer yresults" strSubject "champ à listbox1.selectedval ue? Après avoir appris comment faire cela, je devrais être capable de scanner le tableau et d'obtenir d'autres données dont j'ai besoin (en particulier strLink).

Le code que j'ai maintenant fonctionne, mais je ne sais pas comment procéder à partir d'ici. J'apprécierais une poussée douce (ou shove) dans la bonne direction.

Répondre

0

Certaines choses qui vous aideront dans .Net:

  • Préférer classe sur la structure, sauf si vous avez une bonne raison de ne pas
  • Ne pas utiliser ArrayLists - Préférez System.Collections.Generic.List (T)
  • Regardez en utilisant la classe System.Xml.Serialization.XmlSerializer pour lire vos données XML dans.
+0

Quelle serait l'utilisation appropriée d'un arraylist alors? –

+0

@The Admiral - ArrayList existe maintenant principalement pour la rétrocompatibilité avec le code d'avant .Net 2.0, lorsque les génériques ont été introduits. Il n'y a pas d'autre bonne raison de l'utiliser. –

+0

Merci Joel. Je ne suis pas un développeur Windows natif (développement basé sur PHP/Web), et c'est un projet à court terme (développé à partir d'un besoin de mon propre). Y a-t-il un problème avec la façon dont j'ai lu les données XML? Je suis juste allé avec l'instinct et cela a fonctionné ... –