Voici un petit exemple qui utilise tout simplement une collection existante (Dictionary) pour alimenter un Listbox. Je poste ceci car il s'agit d'un souci récurant pour les codeurs Vb qui se perdent sur .net.
Dim liste As New Dictionary(Of Int32, String) liste.Add(1, "Un") liste.Add(2, "Deux") liste.Add(3, "Tois") Me.ListBox1.DisplayMember = "value" Me.ListBox1.ValueMember = "key" Me.ListBox1.DataSource = liste.ToList()
Il est possible d' utiliser tout type de collection, cependant le Dictonary étant l' une des plus simples, autant l'utiliser.
Pour ce qui est des deux String key et value il s'agit des noms des propriétés de l'objet stocké dans le Dictionary. On peut faire la même chose avec toute liste d'objets.
Par exemple :
' Notre classe custom
Public Class Class1
Private _Id As Int32
Private _Nom As String
Public Property Id() As Int32
Get
Return _Id
End Get
Set(ByVal value As Int32)
_Id = value
End Set
End Property
Public Property Nom() As String
Get
Return _Nom
End Get
Set(ByVal value As String)
_Nom = value
End Set
End Property
Public Overrides Function ToString() As String
Return String.Concat(_Id, " ", _Nom)
End Function
End Class
Et l'utilisation avec la propriété Nom, on voit bien que la méthode ToString() n'est pas utilisée :
Dim liste As New List(Of Class1)
liste.Add(New Class1 With {.Id = 1, .Nom = "Un"})
liste.Add(New Class1 With {.Id = 2, .Nom = "Deux"})
liste.Add(New Class1 With {.Id = 3, .Nom = "Trois"})
Me.ListBox1.DisplayMember = "Nom"
Me.ListBox1.ValueMember = "Id"
Me.ListBox1.DataSource = liste.ToList()