Ordner auslesen & wiedergeben

  • C#

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Switcherlapp97.

    @AtomTiger

    Die Variante von @LaMiy ist erstens VB.NET und zweitens nur für die Ordner in der obersten Ebene brauchbar. Falls du auch die Unterordner benötigst empfehle ich dir diesen Code:

    C#-Quellcode

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. DirectoryInfo ParentDirectory = new DirectoryInfo("DeinPfad");
    4. List<DirectoryInfo> Files = new List<DirectoryInfo>();
    5. foreach (DirectoryInfo f in ParentDirectory.GetDirectories("*.*",SearchOption.AllDirectories))
    6. {
    7. Files.Add(f);
    8. }
    9. comboBox1.DataSource = Files;
    10. comboBox1.DisplayMember = "Name";
    11. }

    Wenn du nur die Ordner in der obersten Ebene benötigst kannst du auch diesen Code verwenden:

    C#-Quellcode

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. DirectoryInfo ParentDirectory = new DirectoryInfo("DeinPfad");
    4. List<DirectoryInfo> Files = new List<DirectoryInfo>();
    5. foreach (DirectoryInfo f in ParentDirectory.GetDirectories())
    6. {
    7. Files.Add(f);
    8. }
    9. comboBox1.DataSource = Files;
    10. comboBox1.DisplayMember = "Name";
    11. }

    Das mit der List mit Directory Infos verwende ich, weil sonst die Pfade der Ordner (wenn du diese nicht in der Combobox anzeigst) verloren gehen. (Ausführliche Beschreibung in VB.NET hier)

    Gruß
    Switcherlapp97
    RubiksCubeSolver


    Jetzt im Showroom

    Switcherlapp97 schrieb:

    DirectoryInfo ParentDirectory = new DirectoryInfo("DeinPfad");
    List<DirectoryInfo> Files = new List<DirectoryInfo>();

    foreach (DirectoryInfo f in ParentDirectory.GetDirectories())
    {
    Files.Add(f);
    }
    comboBox1.DataSource = Files;
    comboBox1.DisplayMember = "Name";

    Danke, aber was bedeuetet das ?

    VB.NET-Quellcode

    1. omboBox1.DisplayMember = "Name";


    Und wie kann ich machen das nicht direkt was ausgewählt ist bei der combobox ?
    @AtomTiger

    Der Sinn mit der DataSource ist es, dass in die Combobox eigentlich die Infos der Ordner hinzugefügt werden. So wird der Ordnerpfad gespeichert. Bei der Methode von @LaMiy in VB.NET wird einfach der Ordnername der Combobox hinzugefügt. Mit nur einem Ordnernamen kann man grundsätzlich nix anfangen.

    AtomTiger schrieb:

    Danke, aber was bedeuetet das ?

    C#-Quellcode

    1. comboBox1.DisplayMember = "Name";

    Das kannst du glaube ich auch weglassen. Es sichert nur, dass der Ordnername angezeigt wird und nicht der Pfad (obwohl der Pfad gespeichert wird). Ich glaube aber, dass wenn man es weglässt ebenfalls nur der Ordnername in der Combobox angezeigt wird.

    Gruß
    Switcherlapp97
    RubiksCubeSolver


    Jetzt im Showroom

    AtomTiger schrieb:

    aber was bedeuetet das ?
    Das siehst Du sofort, wenn Du mal in diesem Beispiel mit der CheckBox spielst:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Me.ComboBox1.Items.Clear()
    3. Me.ComboBox1.Items.AddRange(New IO.DirectoryInfo("c:\Temp").GetDirectories("*.*", IO.SearchOption.AllDirectories))
    4. End Sub
    5. Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
    6. If CheckBox1.Checked Then
    7. Me.ComboBox1.DisplayMember = "FullName"
    8. Else
    9. Me.ComboBox1.DisplayMember = "Name"
    10. End If
    11. End Sub
    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!
    @Swichterlapp97:

    So, danke aber jetzt möchte ich auch noch .txt Dateien auslesen und in eine combobox geben.
    Ich habe es versucht abzuändern aber da kommt ein Error :

    VB.NET-Quellcode

    1. FileInfo ParentDirectory = new FileInfo(fi);
    2. List<FileInfo> Files = new List<FileInfo>();
    3. foreach (FileInfo f in ParentDirectory.GetFiles())// Error bei .GetFiles da es diese funktion nicht gibt
    4. {
    5. Files.Add(f);
    6. }
    7. comboBox2.DataSource = Files;
    8. comboBox2.DisplayMember = "Name";


    Hoffentlich kannst du mir dabeia uch helfen
    @AtomTiger

    Wenn ich das richtig verstanden habe, willst du in der Combobox die txt-Dateien in einem Ordner der Combobox hinzufügen.

    AtomTiger schrieb:

    C#-Quellcode

    1. FileInfo ParentDirectory = new FileInfo(fi);

    Es ist eigentlich logisch, dass hier ein Fehler kommt. Du willst nähmlich aus einer Datei, die Dateien auslesen. So eine Funktion kann es nicht geben. :D :D Das ParentDirectory bleibt natürlich das gleiche, wie beim Unterordner auslesen :)

    C#-Quellcode

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. DirectoryInfo ParentDirectory = new DirectoryInfo("DeinPfad");
    4. List<FileInfo> Files = new List<FileInfo>();
    5. foreach (FileInfo f in ParentDirectory.GetFiles("*.txt",SearchOption.AllDirectories))
    6. {
    7. Files.Add(f);
    8. }
    9. comboBox1.DataSource = Files;
    10. //comboBox1.DisplayMember = "Name";
    11. }

    Mit diesem Code werden nun alle Textdateien in einem Ordner (auch in Unterordnern) der Combobox hinzugefügt. Vorläufig habe ich das mit dem DisplayMember rauskommentiert, da es auch so den Namen der Datei und nicht den Pfad anzeigt. Falls du nur die Textdatein in der obersten Ebene auslesen willst, musst du nur eine Zeile abändern:

    C#-Quellcode

    1. foreach (FileInfo f in ParentDirectory.GetFiles("*.txt"))

    Ich hoffe ich habe das Problem richtig verstanden :)

    Übrigens kannst du für C# statt VB.NET Code-Formatierung auch die für C-Code verwenden. Das geht genau gleich nur in den eckigen klammern steht statt [vb][/vb] eben [code=c][/code] :)

    Gruß
    Switcherlapp97
    RubiksCubeSolver


    Jetzt im Showroom