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()