2010-11-24 4 views
0

У меня есть класс, заполняемый из разделенных запятыми строк в текстовом файле.VB.NET: Поля из класса

Я пытаюсь показать, что свойство имени каждого объекта отображается в списке, а остальные свойства выбранного объекта отображаются в текстовых полях. Как загрузить свойства выбранного объекта в правильное текстовое поле?

+0

Какой тип каждого объекта? Как содержимое текстового файла отображается на этот тип объекта? – cdhowie 2010-11-24 21:58:09

ответ

0

Я предполагаю, что класс у вас заполнить есть список объектов, и что вы уже выяснили, как заполнить ListBox ...

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

У вас есть один 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 
Смежные вопросы