2010-11-24 9 views
0

Une classe est remplie à partir de lignes séparées par des virgules dans un fichier texte. J'essaie de faire apparaître la propriété name de chaque objet dans une listbox, puis d'afficher les autres propriétés d'un objet sélectionné dans les zones de texte. Comment charger les propriétés de l'objet sélectionné dans la zone de texte correcte?VB.NET: champs d'une classe

+0

Quel est le type de chaque objet? Comment le contenu du fichier texte est-il mappé sur ce type d'objet? – cdhowie

Répondre

0

Je suppose que la classe que vous remplissez a une liste des objets et que vous avez déjà compris comment remplir la zone de liste ...

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 

    For Each obj As YourObjectType In YourClass.CollectionOfYourObjects 

     If obj.Name = ListBox1.SelectedItem.ToString Then 

      Textbox1.Text = obj.Property1 
      Textbox2.Text = obj.Property2 

     End If 

    Next 

End Sub 
0

Vous avez un TextBox pour chaque propriété et la le nombre de propriétés est statique, n'est-ce pas? Vous devez définir DisplayMember sur le nom de la propriété que vous souhaitez voir dans la zone de liste.

Cet exemple simplifié devrait fonctionner:

Public Class ListBox 
    Private Sub ListBox_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim allFoos As New List(Of FooClass) 
     For i As Int32 = 1 To 10 
      Dim foo As New FooClass 
      foo.Name = "Foo_" & i 
      foo.Prop1 = "Prop1_" & i 
      foo.Prop2 = "Prop2_" & i 
      foo.Prop3 = "Prop3_" & i 
      allFoos.Add(foo) 
     Next 
     Me.ListBox1.DataSource = allFoos 
     Me.ListBox1.DisplayMember = "Name" 
    End Sub 

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 
     Dim foo As FooClass = DirectCast(ListBox1.SelectedItem, FooClass) 
     Me.TxtName.Text = foo.Name 
     Me.TxtProp1.Text = foo.Prop1.ToString 
     Me.TxtProp2.Text = foo.Prop2.ToString 
     Me.TxtProp3.Text = foo.Prop3.ToString 
    End Sub 
End Class 

Class FooClass 
    Private _name As String 
    Private _prop1 As Object 
    Private _prop2 As Object 
    Private _prop3 As Object 

    Public Property Name() As String 
     Get 
      Return _name 
     End Get 
     Set(ByVal value As String) 
      _name = value 
     End Set 
    End Property 
    Public Property Prop1() As Object 
     Get 
      Return _prop1 
     End Get 
     Set(ByVal value As Object) 
      _prop1 = value 
     End Set 
    End Property 
    Public Property Prop2() As Object 
     Get 
      Return _prop2 
     End Get 
     Set(ByVal value As Object) 
      _prop2 = value 
     End Set 
    End Property 
    Public Property Prop3() As Object 
     Get 
      Return _prop3 
     End Get 
     Set(ByVal value As Object) 
      _prop3 = value 
     End Set 
    End Property 
End Class 
Questions connexes