2010-11-24 8 views
0

テキストファイルのコンマ区切りの行からクラスを作成しています。VB.NET:クラスのフィールド

各オブジェクトのnameプロパティをリストボックスに表示させようとしていて、選択したオブジェクトの残りのプロパティをテキストボックスに表示させたいです。選択したオブジェクトのプロパティを正しいテキストボックスにロードするにはどうすればよいですか?私はあなたが記入したクラスは、あなたがすでにリストボックスを埋める方法を考え出したことをオブジェクトのリストを持っているとすることを仮定してい

+0

各オブジェクトの種類は何ですか?テキストファイルの内容は、このタイプのオブジェクトにどのようにマッピングされますか? – cdhowie

答えて

0

...

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

あなたはすべての財産とに1つのTextBoxを持っていますプロパティの数は静的ではありませんか? リストボックスに表示するプロパティの名前にDisplayMemberを設定する必要があります。

この単純化されたサンプルは動作するはずです:

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