Vb.net 为什么ListBox不能正确显示对象?

Vb.net 为什么ListBox不能正确显示对象?,vb.net,listbox,Vb.net,Listbox,我有一个列表框和一个类。 该类称为CTS\u Warnings\u List 这个列表框被称为lbpropWarningFacList 下面是课堂: Public Class CTS_Warnings_List Public _Warning As String Public _WarnID As Integer Public Property Warning() As String Get Return _Warning End Get Set(By

我有一个列表框和一个类。 该类称为CTS\u Warnings\u List 这个列表框被称为lbpropWarningFacList

下面是课堂:

Public Class CTS_Warnings_List
Public _Warning As String
Public _WarnID As Integer


Public Property Warning() As String
    Get
        Return _Warning
    End Get
    Set(ByVal value As String)
        _Warning = value
    End Set
End Property

Public Property WarnID() As Integer
    Get
        Return _WarnID
    End Get
    Set(ByVal value As Integer)
        _WarnID = value
    End Set
End Property


Sub New(ByVal Warning As String, ByVal WarnID As Integer)
    Me.Warning = Warning
    Me.WarnID = WarnID
End Sub

End Class
现在我想在列表框中添加一个新项。所以我试了一下:

Dim llist As New CTS_Warnings_List("K", 8)
    lbpropWarningFacList.Items.Add(llist)
lbpropWarningFacList.Items.Add(New CTS_Warnings_List("K", 8))
我也试过:

Dim llist As New CTS_Warnings_List("K", 8)
    lbpropWarningFacList.Items.Add(llist)
lbpropWarningFacList.Items.Add(New CTS_Warnings_List("K", 8))
当我运行应用程序并将其添加到列表框时,在每种情况下,我都会在列表框中显示:

应用程序名称。类名称

作为列表框中的显示

我做错了什么


谢谢

您正在向列表框发送CTS\u警告\u列表对象。列表框如何知道如何处理该对象?它不知道如何处理那个物体。如果要将对象的属性发送到列表框,则必须执行以下操作:

lbpropWarningFacList.Items.Add(llist._WarnID & ": " & llist.Warning)

您正在向列表框发送CTS\u Warnings\u列表对象。列表框如何知道如何处理该对象?它不知道如何处理那个物体。如果要将对象的属性发送到列表框,则必须执行以下操作:

lbpropWarningFacList.Items.Add(llist._WarnID & ": " & llist.Warning)

列表框只知道如何显示字符串。
因此,当您将任何类型的项添加到列表框时,它将显示通过调用items
ToString()
方法获得的值


您应该重写
ToString()
方法,或者首先简单地将项作为字符串输入

在您的情况下,将以下内容添加到您的类中:

Public overrides function ToString() as string
    return Me.Warning & " " & Me.WarnID.ToString()
End Function

列表框只知道如何显示字符串。
因此,当您将任何类型的项添加到列表框时,它将显示通过调用items
ToString()
方法获得的值


您应该重写
ToString()
方法,或者首先简单地将项作为字符串输入

在您的情况下,将以下内容添加到您的类中:

Public overrides function ToString() as string
    return Me.Warning & " " & Me.WarnID.ToString()
End Function

谢谢你的回复。但是我发现如果我加上

NameOfListBox.DisplayMemeber = "PropertyOfClass"
NameOfListBox.ValueMember = "PropertyOfClass"

只需添加此项,即可在列表框中显示正确的数据。

感谢您的回复。但是我发现如果我加上

NameOfListBox.DisplayMemeber = "PropertyOfClass"
NameOfListBox.ValueMember = "PropertyOfClass"

只需添加它,现在就可以在列表框中显示正确的数据。

您应该重写类中的
ToString
方法。您应该重写类中的
ToString
方法。