ListBox zobrazování položek   zodpovězená otázka

VB.NET, Algoritmy

Zdravím,

lze pomocí ListBox.FormatString docílit toho, aby se mi položky jako:

"C:/File1.bin"

"C:/Folder"

zobrazovali:

"File1.bin"

"Folder"

a jestli ano, jak můžu programově zjistit celou cestu z položky zobrazené přes formatstring?

Děkuji

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

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.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji, to mě opravdu nenapadlo, ale k čemu potom složí formatstring?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Třeba k tomu, že do Listboxu naflákáš čísla 13 a 15.64 a zobrazí se Ti "13,00 Kč" a "15,64 Kč", nebo to umí formátovat třeba datum a čas. Ale cestu s tím neuděláš.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback