Přes FormatString to nepůjde, z něj již není cesta zpět. Ale komponenta ListBox má jednu skvělou vlastnost - do kolekce Items můžete uložit libovolný datový typ a říci, co se má zobrazit. Stačí tedy nadeklarovat strukturu, která bude držet všechny informace o položce (hodnota, kterou chcete zobrazit, musí být vlastnost - Property) a pak ji nastavit do ListBoxu:
Public Class Form1
Public Structure Soubor
Dim _Nazev As String
Public Property Nazev() As String
Get
Return _Nazev
End Get
Set(ByVal value As String)
_Nazev = value
End Set
End Property
Dim CelaCesta As String
End Structure
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.DisplayMember = "Nazev" 'co se má zobrazit
'naplnit položky
For Each f As String In IO.Directory.GetFiles("d:\")
Dim p As New Soubor()
p.Nazev = IO.Path.GetFileName(f)
p.CelaCesta = f
ListBox1.Items.Add(p)
Next
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
If ListBox1.SelectedItem IsNot Nothing Then 'pokud je něco vybráno
Dim p As Soubor = CType(ListBox1.SelectedItem, Soubor) 'přetypovat položku
Label1.Text = p.CelaCesta 'zobrazit do labelu hodnotu vybrané položky
End If
End Sub
End Class
Když chcete testovat, co bylo v položce, ujistěte se nejdřív, že SelectedItem není prázdné, a pak ji pomocí CType přetypujte na typ Soubor (naše struktura). Pak již máte k dispozici její vlastnosti.
|