Comment puis-je faire une ListBox actualiser son texte d'un élément?

Je suis en train de faire un exemple pour quelqu'un qui n'a pas encore réalisé que les commandes comme ListBox n'avez pas à contenir des chaînes; il avait été le stockage formaté de cordes et de sauter à travers compliqué l'analyse des cerceaux pour obtenir les données de retour de l' ListBox et j'aimerais lui montrer il ya une meilleure façon.

J'ai remarqué que si j'ai un objet stocké dans la ListBox ensuite mettre à jour une valeur qui affecte ToString, le ListBox ne pas se mettre à jour. J'ai essayé d'appeler Refresh et Update sur le contrôle, mais aucun ne fonctionne. Voici le code de l'exemple que j'utilise, cela nécessite que vous faites glisser un contrôle listbox et un bouton sur le formulaire:

Public Class Form1

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        MyBase.OnLoad(e)

        For i As Integer = 1 To 3
            Dim tempInfo As New NumberInfo()
            tempInfo.Count = i
            tempInfo.Number = i * 100
            ListBox1.Items.Add(tempInfo)
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For Each objItem As Object In ListBox1.Items
            Dim info As NumberInfo = DirectCast(objItem, NumberInfo)
            info.Count += 1
        Next
    End Sub
End Class

Public Class NumberInfo

    Public Count As Integer
    Public Number As Integer

    Public Overrides Function ToString() As String
        Return String.Format("{0}, {1}", Count, Number)
    End Function
End Class

J'ai pensé que peut-être que le problème a été en utilisant les champs de et a essayé de mise en œuvre INotifyPropertyChanged, mais cela n'a eu aucun effet. (La raison pour laquelle je suis à l'aide de champs, parce que c'est un exemple et je n'ai pas envie d'ajouter quelques dizaines de lignes qui n'ont rien à voir avec le sujet je suis démontrer.)

Honnêtement, je n'ai jamais essayé la mise à jour des articles dans ce genre d'endroit avant; dans le passé, j'ai toujours été l'ajout/suppression d'éléments, ne pas les modifier. Donc, je n'ai jamais remarqué que je ne sais pas comment faire ce travail.

Donc ce qui me manque?

InformationsquelleAutor OwenP | 2008-09-14