Záleží na tom, jak načítáte data do ListBox a jak je zase ukládáte zpět. V případě, že to děláte manuálně řádek po řádku, tak si vytvořte objekt, který dokáže uchovat jak text, tak unique ID:
Class Polozka
Private pText As String
Public Property Text() As String
Get
Return pText
End Get
Set(ByVal value As String)
pText = value
End Set
End Property
Private pID As Integer
Public Property ID() As Integer
Get
Return pID
End Get
Set(ByVal value As Integer)
pID = value
End Set
End Property
Public Overrides Function ToString() As String
Return Text ' tato funkce vrací to, co se zobrazí v ListBoxu jako text
End Function
Sub New(ByVal Text As String, ByVal ID As Integer)
Me.Text = Text
Me.ID = ID
End Sub
End Class
A pak už jen plňte ListBox:
...
Listbox1.Items.Add(new Polozka(textPolozky, idPolozky))
...
Tím pádem máte v ListBoxu seznam typu Polozka a z něj se dá už snadno ID vytáhnout touto funkcí (která při ničem nevybraném vrací 0):
Function ZjistiVybraneID() As Integer
If ListBox1.SelectedItem IsNot Nothing Then
Return CType(ListBox1.SelectedItem, Polozka).ID
Else
Return 0
End If
End Function
Pokud něco není jasné, rád vysvětlím. A v případě, že jste zvolil bindovací metodu přes DataSource objekty, stačí zvolit v nastavení bindování identifikační a zobrazovanou hodnotu listboxu a použít:
Dim ID as Integer = ListBox1.SelectedValue
Snad to pomůže.
|