ListBox Text Frage

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Unwesen.

    ListBox Text Frage

    Hallo,

    Ich habe eine Frageich habe für mein Media Player Eine Listbox mit Drag and Drop Gemacht aber wie kann ich statt den ganzen C:\blalalala\musik.mp3

    einfach nur musik.mp3 anzeigen lassen aber wen ich dan auf play drücke soll er wieder auf den path zugreifen also wieder C:\blablalala\musik.mp3

    Danke.! :D
    So, keine komplettlösung, aber könnte dich vllt weiterbringen:
    Benutz einfach 2 Listboxen, eine für die Pfadnamen, welche unsichbar ist, und eine für die Dateinamen, welche sichtbar ist und mit der du dann auswählst.

    Spoiler anzeigen

    Also, einfach mal ein Projekt eröffnen, 2 Listboxen rein, einen Button und den Code reinkopieren.. Beim ausführen dürfte dir alles klar werden.

    In dem Beispielcode wäre die Unsichbare Listbox die ListBox1...

    Zum Testen habe ich hier lediglich einen String mit einem Pfad definiert, das Umschreiben dürfte nicht weiter schwer sein.



    VB.NET-Quellcode

    1. Dim Pfadname As String
    2. Dim Filename As String
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Pfadname = "C:\Pfad\Filename"
    5. For i As Integer = 0 To 20
    6. ListBox1.Items.Add(Pfadname & i.ToString)
    7. Next
    8. For i As Integer = 0 To 20
    9. Filename = ListBox1.Items(i)
    10. Filename = Filename.Substring(Filename.LastIndexOf("\") + 1, Filename.Length - Filename.LastIndexOf("\") - 1)
    11. ListBox2.Items.Add(Filename)
    12. Next
    13. End Sub
    14. Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
    15. 'Klick in Listbox2 gibt Datei und Pfadnamen des angeklickten Eintrags aus
    16. MessageBox.Show("Dateiname=" & ListBox2.SelectedItem & vbNewLine & "Pfadname=" & ListBox1.Items.Item(ListBox2.SelectedIndex))
    17. End Sub


    (Vermutlich wäre es mit Dim Pfadnamen As List(Of String) einfacher, als mit einer unsichbaren zweiten Listbox, aber ich komm mit List of einfach net richtig klar im Moment^^)





    Sieh das ganze als Anregung. Zweifellos wird irgendwer noch einen optimierten Code nachliefern, wenn nicht, dann sollte das aber eine brauchbare Grundlage sein.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Unwesen“ ()

    das war auch mein erster gedanke ich glaube ich mach das so aber dan müsste man das aber auch so schreiben wen jetzt

    z.b lied1.mp3 in der box ausgewählt ist dan dan auch in der 2ten box der path auch automatisch ausgewählt ist also ich kenne den code

    jetzt dafür nicht aber wen listbox1 1 stelle also erste reiche angeklickt kann man dan auch irgendwie die 1stelle in der 2ten box anklicken

    ich weiß nicht vllt mit performenclick oder so wäre dankbar für hilfe

    Sinlyu schrieb:


    jetzt dafür nicht aber wen listbox1 1 stelle also erste reiche angeklickt kann man dan auch irgendwie die 1stelle in der 2ten box anklicken


    Naja, ne Lösung dafür haste ja bekommen, aber ich frag mich: "Wozu?" Brauchst du echt 2 Anzeigen? Es reicht doch, wenn die Pfade Programmintern bekannt sind? Ich würde allenfalls noch nen Tooltipp mit dem Jeweiligen Pfad ausgeben, oder in einem Label anzeigen lassen, was gerade ausgewählt wurde. Aber gut, ist ja deine Sache, wenn du gerne viele Anzeigen auf dem Bildschirm hast. 8-)
    So, keine komplettlösung, aber könnte dich vllt weiterbringen:
    Benutz einfach 2 Listboxen, eine für die Pfadnamen, welche unsichbar ist, und eine für die Dateinamen, welche sichtbar ist und mit der du dann auswählst.

    Sehr sehr enttäuschend :( Das geht gar nicht :|




    So würde Ich's machen:
    Für folgendes Beispiel brauchst du 1x Button, 1x ListBox, 1x TextBox und 1x FolderBrowserDialog

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text.RegularExpressions
    3. Public Class Form1
    4. Private fcol As New List(Of String)
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
    7. For Each File As String In Directory.GetFiles(FolderBrowserDialog1.SelectedPath)
    8. fcol.Add(File)
    9. Next
    10. End If
    11. For i As Integer = 0 To fcol.Count - 1
    12. ListBox1.Items.Add(fcol(i))
    13. fcol(i) = Regex.Replace(fcol(i), "^.*\\", "", RegexOptions.IgnoreCase)
    14. Next
    15. End Sub
    16. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    17. TextBox1.Text = fcol(ListBox1.SelectedIndex)
    18. End Sub
    19. End Class

    Und das war's, mehr ist da nicht. Zieh' einfach die oben genannten Controls auf deine Form und paste den Code, um das zu testen.
    Wenn du das hast, klick den button, wähl nen Ordner in dem auch Dateien drin liegen und auf den du zugriff hast. Die im ordner enthaltenen Dateien werden in die Listbox gelistet, wenn du auf irgendeines in der Liste draufklickst, wird unten in der TextBox nur der Dateiname angezeigt.



    link_275
    Hello World

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „link_275“ ()

    Für die Filenamen und Pfade hat Bill Klassen geschaffen:

    VB.NET-Quellcode

    1. Dim pathName As String = "C:\Temp\xxx.mpg"
    2. Dim fi As New System.IO.FileInfo(pathName)
    3. Dim path As String = fi.DirectoryName ' "C:\Temp"
    4. Dim name As String = fi.Name ' "xxx.mpg"
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich hab'S halt soo mit den Strings :rolleyes:
    Aber du hast natürlich recht, das RegEx könnte man sich im Grunde sparen, aber dennoch: es geht und ist nicht unsauber ;)


    link_275
    Hello World
    Was weniger sauber ist. Wieso umständlich wenn Ich einen weitaus einfacheren Code gepostet hab'????
    Außerdem sieht'S scheiße aus in der IDE ... aaaah *umständlich* :S :|
    :huh:

    link_275
    Hello World

    link_275 schrieb:

    Sehr sehr enttäuschend :( Das geht gar nicht :|


    Naja, wenn ich seit 2009 programmieren würde und das hier kein Grundlagenbereich wäre.. Wenn ich seit ein paar Jahren VB Programmieren würde, würde ich vermutlich auch anders Antworten. Wobei ich als Anfänger schon Codes bevorzuge, die ich einigermaßen nachvollziehen kann, anstelle von solchen, die zwar Super performant sind, aber dafür relativ undurchschaubar für mich sind. Das wäre dann wirklich nur C&P Code.

    Aber ich (um)schrieb ja schon in meinem Beitrag, das meine Antwort sicherlich nicht die Optimale Lösung ist...

    MfG
    ohne jetzt alles zu lesen würde ich einfach den pfad in ein string array schreiben und dann splitten und den namen in die listbox dann der index ist im array und in der box gleich von dem her dürfte kein problem sein


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Ja toll, thefiloe, und bei was splittest du? o_O
    Ich hab's eben jetzt mit 'ner List(Of String) gemacht, also so wie du jetzt gemeint hast, nur was du mit dem splitten vorhast ist mir nicht so ganz klar :huh:


    link_275
    Hello World
    Das Thema ist zwar erledigt, aber ich habe meinen Code nochmal geringfügig überarbeitet:

    VB.NET-Quellcode

    1. Dim Pfade As New List(Of String)
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. For Each Pfad As String In My.Computer.FileSystem.GetFiles(Application.StartupPath) 'Lese die Pfade aus dem angegebenen Verzeichnis
    4. Pfade.Add(Pfad) 'und Speichere sie im List of - Array
    5. ListBox1.Items.Add(Pfad.Substring(Pfad.LastIndexOf("\") + 1, Pfad.Length - Pfad.LastIndexOf("\") - 1)) 'in die Listbox kommen die Dateinamen (plus extension)
    6. Next
    7. End Sub
    8. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    9. 'Klick auf Dateinamen in der Listbox gibt eine Messagebox mit dem jeweiligen Pfad aus
    10. MessageBox.Show(Pfade.Item(ListBox1.SelectedIndex))
    11. End Sub