Ordner öffnen und Process starten

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Ordner öffnen und Process starten

    Guten Abend,

    ich liste in Lb1 Ordner auf und in Lb2 Files. Nun öffnet sich wenn ich auf ein Item klicke immer der Ordner "Dokumente".
    Und in Lb2 muss ich bei jedem Item die ersten 32Zeichen löschen. Also For..Each. Nur wie bekomme ich das hin?
    Hier der bisherige Code.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. auslesen()
    3. End Sub
    4. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    5. ausführen_l1()
    6. End Sub
    7. Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged
    8. ausführen_l2()
    9. End Sub

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub auslesen()
    2. ListBox1.Items.AddRange(IO.Directory.GetDirectories("C:\Users\Alexander\Desktop\Alles"))
    3. ListBox2.Items.AddRange(IO.Directory.GetFiles("C:\Users\Alexander\Desktop\Alles"))
    4. End Sub
    5. Private Sub ausführen_l2()
    6. Dim sitem As String = CStr(ListBox1.SelectedItem)
    7. Try
    8. Shell("explorer /" & sitem, AppWinStyle.NormalFocus)
    9. Catch ex As Exception
    10. MsgBox(ex.Message)
    11. End Try
    12. End Sub
    13. Private Sub ausführen_l1()
    14. Dim sitem As String = CStr(ListBox1.SelectedItem)
    15. Try
    16. Shell("explorer /" & sitem, AppWinStyle.NormalFocus)
    17. Catch ex As Exception
    18. MsgBox(ex.Message)
    19. End Try
    20. End Sub


    LG

    LaMiy schrieb:

    Und in Lb2 muss ich bei jedem Item die ersten 32Zeichen löschen. Also For..Each.

    Mir scheint, du zäumst den Gaul von hinten auf. Ich vermute mal, du willst nicht den vollständigen Dateinamen inkl. Pfad sondern nur den Dateinamen an sich in LB2 haben. Sieh dir dazu mal die FileInfo- und die Direktoryinfo-Klassen an. Die bieten dir neben den von dir gewünschten Funktionen noch mehr. Auch die Listbox kann mehr. Item hat nähmlich den Typ Object. D.h. du kannst dir z.B. eine Klasse InfoItem schreiben dort die komplette Info en thält. Deren Tostring-Methode überschreiben und damit die gewünschte Info ausgeben. Dies ist die augenscheinlich einfaxche Variante.
    Aber es geht noch besser:
    Erfinder des Rades hat dazu mal nen Artikel verfasst, in dem die File-/DirektoryInfo in List(Of T) gespeichert werden und die entsprechenden Eigenschaften über Datenbindung an der Listbox angezeigt werden. Dies entspricht auch der Philosophie Daten und Anzeige voneinander zu trennen. Das ist nicht nur übersichtlicher sondern auch leistungsfähiger.

    Fiel Fergnügen

    Vatter

    Edit: Shell ist veraltet. Nimm statt dessen Process-Klasse.
    Und Try-Catch ist ganz übel.
    Pfade setze besser mit Path.Combine zusammen. dann schummeln sich da nicht so schnell Fehler rein.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

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