ListBox Items

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von PascalN.

    ListBox Items

    Hallo zusammen

    Mein Programm schreibt mir auf Button Klick alle TxtDateien in die ListBox, in meinem gewählten Pfad.

    VB.NET-Quellcode

    1. For Each file As IO.FileInfo In New IO.DirectoryInfo("C:\Users\" + TextBox12.Text + "\Desktop\Kunden").GetFiles
    2. If file.Extension = ".txt" Then
    3. ListBox1.Items.Add(file.FullName)
    4. End If
    5. Next


    Als zweites sollte er mit alle Items (Also alle TxT-Dateien) in eine Textbox schreiben.
    Hab ich mir so gedacht:

    VB.NET-Quellcode

    1. TextBox13.Text = ListBox1.Items.ToString


    Das geht nicht. Dann hab ich's so probiert:

    VB.NET-Quellcode

    1. Dim Alle As String = ListBox1.Text
    2. TextBox13.Text = Alle.ToString


    Geht auch nciht. Und wenn ich es so mache:

    VB.NET-Quellcode

    1. Dim Alle As String = ListBox1.Items.ToString
    2. TextBox13.Text = Alle


    kommt in der TextBox:
    System.Windows.Forms.ListBox+ObjectCollection

    Wie muss ich es machen das er mir jedes Item in meine TextBox schreibt ?

    Lg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    VB.NET-Quellcode

    1. For Each item As String In ListBox1.Items
    2. TextBox3.Text &= item & " " ' letzteres ist nur ein Leerschlag, um die items zu unterscheiden.. Kann auch weggelassen werden
    3. Next

    So.
    EDIT: Du meint wohl den INHALT der Dateien. Nun:

    VB.NET-Quellcode

    1. For Each item As String In ListBox1.Items
    2. TextBox3.Text &= IO.File.ReadAllText(item) & " "
    3. Next



    Grüsse
    Pascal
    durchlaufen und zusammenfügen?

    VB.NET-Quellcode

    1. Dim tmp As String = ""
    2. For each itm As String In ListBox.Items
    3. tmp &= itm '& vbNewLine ->evtl
    4. Next
    5. TextBox.Text = tmp


    edit: zu langsam^^
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Dann hast du ihn falsch verwendet...
    Denn ich sehe in meinem Code nirgends eine Anweisung, die mit Listbox1.Items.Add() beginnt..
    Du hast die Stelle vermutlich an die falsche Stelle kopiert....
    Denn zwischen jvbsl's und meinem Code sehe ich keine grossen Unterschiede..

    aber egal.


    Grüsse
    Pascal

    PascalN schrieb:

    VB.NET-Quellcode

    1. For Each item As String In ListBox1.Items
    2. TextBox3.Text &= item & " " ' letzteres ist nur ein Leerschlag, um die items zu unterscheiden.. Kann auch weggelassen werden
    3. Next

    So.
    EDIT: Du meint wohl den INHALT der Dateien. Nun:

    VB.NET-Quellcode

    1. For Each item As String In ListBox1.Items
    2. TextBox3.Text &= IO.File.ReadAllText(item) & " "
    3. Next



    Grüsse
    Pascal

    Naja, ist aber nicht gerade sauber ^^

    VB.NET-Quellcode

    1. For Each item As Object In ListBox1.Items
    2. TextBox3.Text &= IO.File.ReadAllText(item.ToString()) & " "
    3. Next

    Beep! schrieb:

    Naja, ist aber nicht gerade sauber ^^

    VB.NET-Quellcode

    1. For Each item As Object In ListBox1.Items
    2. TextBox3.Text &= IO.File.ReadAllText(item.ToString()) & " "
    3. Next


    Ob du es jetzt bei Item.ToString in einen String umwandelt, oder direkt bei der Schleife macht nun wirklich keinen Unterschied.... :S


    Grüsse
    Pascal
    Genau ^^

    Und wenn ein String verändert/kopiert wird (auch wenn in der IntelliSense "As Object" steht), wird sowieso immer automatisch ein neues String-Objekt erzeugt, sprich man müsste eigentlich gar keine Typenbezeichnung machen.... Aber lassen wird das :P


    Grüsse
    Pascal

    jvbsl schrieb:

    jedoch sind die Items immer vom Typ String, solange man das Control an sich nicht ändert :P
    Wirklich?
    Siehe Anhang.
    Deswegen ist es ja auch möglich, Objekte jeden Datentyps zu übergeben, nur wird eben bei den meisten Datentypen durch die ToString()-Methode nur der Name des Datentyps zurückgegeben, bei Bitmap also beispielsweise System.Drawing.Bitmap.

    PascalN schrieb:

    Ob du es jetzt bei Item.ToString in einen String umwandelt, oder direkt bei der Schleife macht nun wirklich keinen Unterschied.... :S
    Das Problem dabei ist, dass, wenn du gleich den Datentyp änderst, eine explizite Konvertierung vollzogen wird, was in vielen anderen Sprachen nicht einmal möglich ist, bzw. sehen Entwickler (wovon ich mich aber distanziere, nur um das klarzustellen) explizite Konvertierungen gar nicht gern.

    Aber eigentlich ist es die Diskussion nicht wert ^^
    Bilder
    • obj.png

      3,86 kB, 440×57, 166 mal angesehen
    Aber das ListBox Item ist im Grunde genomen "nur" ein String, denn es hat keine eigene Klasse (man könnte aber eine eigene ListBoxItem-Klasse erstellen)
    As Object ist also aus genau diesem Grund deklariert, weil man eben theoretisch eigene Items hinzufügen kann....
    Und wegen den expliziten Konvertierungen.... VB ist hier sowieso ein Sonderfall.. ich meine man kann einer Textbox ohne Typenkonvertierung einen Integer Wert zuweisen....
    Da wird von der IDE her sehr viel toleriert....


    Grüsse
    Pascal