vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · ListBox & ComboBox   |   VB-Versionen: VB.NET28.06.06
Combo-/ListBox mit ItemData-Eigenschaft erweitern (.NET)

Wie man die Items-Auflistung der Combo-/ListBox um die "fehlende" ItemData-Eigenschaft erweitert, erfahren Sie hier.

Autor:   Dieter OtterBewertung:  Views:  27.710 
www.tools4vb.deSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

In früheren VB-Versionen (VB5, VB6) verfügte das ComboBox- bzw. ListBox-Control über eine zusätzliche Eigenschaft "ItemData", in der man einen numerischen Wert für jeden einzelnen Eintrag der Combo-/ListBox speichern konnte (bspw. den ID-Wert einer DB-Tabelle).

Unter VB.NET gibt es diese Eigenschaft (leider) nicht mehr.

Da die Items-Auflistung jedoch komplette Objekte aufnehmen kann, können wir die "fehlende" ItemData-Eigenschaft wie folgt realisieren.

Fügen Sie Ihrem Projekt ein neues Klassenmodul mit folgendem Code hinzu:

Public Class MyListItem
  ' Eigenschaftsvariablen
  Dim m_Text As String
  Dim m_ItemData As Integer
 
  ' Initialisiern: Text und ItemData werden übergeben
  Public Sub New(ByVal Text As String, ByVal ItemData As Integer)
    m_Text = Text
    m_ItemData = ItemData
  End Sub
 
  ' Text-Eigenschaft (Wert, der in der ComboBox-Liste angezeigt wird)
  Property Text() As String
  Get
    Return m_Text
  End Get
  Set(ByVal Value As String)
    m_Text = Value
  End Set
  End Property
 
  ' ItemData-Eigenschaft (Wert, der zusätzlich zu jedem Eintrag gespeichert wird)
  Property ItemData() As Integer
  Get
    Return (m_ItemData)
  End Get
  Set(ByVal Value As Integer)
    m_ItemData = Value
  End Set
  End Property
 
  Public Overrides Function ToString() As String
    Return m_Text
  End Function
End Class

Das Füllen der Combo- bzw. ListBox erfolgt dann so:

Private Sub Form1_Load(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles MyBase.Load
 
  ' ComboBox füllen
  With ComboBox1
    .Items.Add(New MyListItem("Eintrag 1", 1))
    .Items.Add(New MyListItem("Eintrag 2", 2))
    ...
  End With
End Sub

Um den Wert von "ItemData" später wieder auszulesen, gehen Sie wie folgt vor:

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
 
  ' Ausgabe "Text" und "ItemData"
  Dim oItem As MyListItem = ComboBox1.SelectedItem
  MsgBox(oItem.Text & vbCrLf & oItem.ItemData.ToString)
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.