为什么ListBox无法正确显示对象?

时间:2015-06-01 17:25:15

标签: vb.net listbox

我有一个列表框和一个类。 该类称为CTS_Warnings_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))

当我运行应用程序并将其添加到列表框时,在每种情况下我都会在列表框中显示:

NameOfApplication.NameOfClass

作为列表框中的显示。

我做错了什么?

谢谢

3 个答案:

答案 0 :(得分:3)

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

您应该覆盖ToString()方法,或者只是首先输入项目作为字符串。

在您的情况下,请将其添加到您的班级:

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

答案 1 :(得分:2)

您正在将CTS_Warnings_List对象发送到列表框。列表框如何知道如何处理该对象?它知道如何处理该对象。如果要将对象的属性发送到列表框,则必须执行以下操作:

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

答案 2 :(得分:1)

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

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

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