Ordner in ComboBoxen rekursiv

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Petersilie.

    Ordner in ComboBoxen rekursiv

    Hallo Leute,

    ich habe eine Form mit 6 Comboboxen.

    In der ersten wird ein Nutzer ausgewählt, in der zweiten steht seine Abteilung.

    3, 4 und 5 sind Unterordner, falls es welche gibt.

    Ich habe also einen festen Start Pfad, der sich je nach Nutzer, Abteilung und Auswahl des Unterordners verändert.

    Das klappt soweit wunderbar.
    Nur ist mein Problem, dass wenn der Nutzer einen anderen Unterordner, in einer Combobox auswählt, das ganze nicht mehr funzt.

    Hier mein derzeitiger Code:

    VB.NET-Quellcode

    1. Private Function has_Subfolder() As Boolean
    2. Dim dr As New IO.DirectoryInfo(folder)
    3. Dim subDR = dr.GetDirectories()
    4. If Not subDR Is Nothing Then has_Subfolder = True
    5. Return has_Subfolder
    6. End Function
    7.  
    8. Private Function has_Documents() As Boolean
    9. Dim dr As New IO.DirectoryInfo(folder)
    10. Dim fileDR = dr.GetFiles()
    11. If Not fileDR Is Nothing Then has_Documents = True
    12. Return has_Documents
    13. End Function
    14.  
    15. Private Sub get_Subfolder(ByVal curCombo As ComboBox)
    16. For Each dr In IO.Directory.GetDirectories(folder)
    17. curCombo.Items.Add(IO.Path.GetFileNameWithoutExtension(dr))
    18. Next
    19. curCombo.Text = "Bitte auswählen"
    20. End Sub
    21. Private Sub get_Documents(ByVal curCombo As ComboBox)
    22. For Each file As String In IO.Directory.GetFiles(folder)
    23. curCombo.Items.Add(IO.Path.GetFileNameWithoutExtension(file))
    24. Next
    25. curCombo.Text = "Bitte auswählen"
    26. End Sub
    27.  
    28. Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
    29.  
    30.  
    31. If ComboBox2.Text <> "" Then
    32. folder = folder & "\" & ComboBox2.Text
    33. If has_Subfolder() Then
    34. get_Subfolder(Me.ComboBox3)
    35. ElseIf has_Documents() Then
    36. get_Documents(Me.ComboBox6)
    37. End If
    38. End If
    39. End Sub



    Problem ist, dass die variable 'folder' immer erweitert und ich komme auf keine Sinnvolle Lösung, den Pfad abzuändern, nachdem
    in einer Combobox ein anderer Unterordner ausgewählt wurde.

    Habt ihr da einen Vorschlag für mich?
    Ich dachte an Rekursion, weiß aber nicht wie man die hier sinnvoll einbauen kann.
    Wenn man von den vielen platzraubenden Leerzeilen in Deinem geposteten Code absieht:
    Du könntest aus solchen Sachen wie

    VB.NET-Quellcode

    1. If Not subDR Is Nothing Then has_Subfolder = True
    2. Return has_Subfolder

    einfach

    VB.NET-Quellcode

    1. Return subDR IsNot Nothing

    machen.

    Zurück zum Problem:
    Folder soll sich also aus nur aus den SelectedItems von ComboBox1 bis ComboBox5 zusammensetzen, richtig? Dann bau es doch absolut zusammen, nicht immer was anhängen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.