Ich kriege nur den letzten Artikel in meiner Textbox ausgegeben

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ich kriege nur den letzten Artikel in meiner Textbox ausgegeben

    Heyho,

    wir haben mehrere Artikel in unserer Firma und wollen die in Typ, Breite, Breite, Länge, Dicke und Material ausgeschrieben bekommen.
    Ich habe mir einen Button erstellt mit dem ich von mehreren Artikeln, den jeweiligen Typ, Breite, Breite, Länge, Dicke und Material ausgeschrieben bekomme.
    Jedoch bekomme ich (siehe Bild) nur den letzten Artikel mit den jeweiligen Attributen ausgeschrieben. Wie bekomme ich alle Artikel
    untereinander ausgeschrieben? Ich wäre euch sehr dankbar wenn ihr mir da weiterhelfen könntet. Lg (mein Ausbilder ärgert mich)


    VB.NET-Quellcode

    1. ​Public Class Form3
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. TextBox2.Text = ""
    4. For Each zeile In TextBox1.Text.Split(vbCrLf)
    5. zeile = zeile.ToUpper()
    6. If (zeile.Split("_"c).Count >= 1) Then TextBox2.Text = TextBox2.Text & zeile.Split("_"c)(0).ToString & (vbCrLf)
    7. Dim Platte = "SE-196X296-37-1730"
    8. Dim Typ = zeile.Split("-"c)(0).ToString
    9. Dim Breite = zeile.Split("-"c)(1).ToString.Split("X"c)(0).ToString
    10. Dim Laenge = zeile.Split("-"c)(1).ToString.Split("X"c)(1).ToString
    11. Dim Dicke = zeile.Split("-"c)(2).ToString
    12. Dim Material = zeile.Split("-"c)(3).ToString
    13. TextBox2.Text = "Typ: " & Typ & (vbCrLf) & "Breite: " & Breite & (vbCrLf) & "Laenge: " & Laenge & (vbCrLf) & "Dicke: " & Dicke & (vbCrLf) & "Material: " & Material & (vbCrLf)
    14. Next
    15. End Sub
    16. End Class
    Willkommen im Forum.

    Ich blick's nur teilweise, aber dass Du in Zeile#14 den bisherigen TextBox2-Inhalt effektiv löschst und durch einen anderen ersetzt, weißt Du, oder? Falls Du das nicht willst, musst Du die Zeile beginnen mit TextBox2.Text &=

    Da allerdings in TB1 4x der gleiche Artikel drinsteht, wird sich inhaltlich nicht viel ändern. Außer, dass das Einzeldatenpaket 4x nacheinander drinstehen wird.
    Was hat es eigentlich mit Platte auf sich? Wird nirgends verwendet.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Du setzt TextBox2.Text in deiner ForEach. Du überschreibst quasi mit jeder zeile in TextBox1.Text.Split(vbCrLf) wieder den Inhalt von TextBox2.
    Du kannst dir die jeweiligen Eigenschaft (Typ, Breite, Länge...) lokal in einer Liste speichern und dann alle so wie du willst in deine TextBox2 schreiben; natürlich außerhalb deiner ForEach. Oder du musst TextBox2.Text &= in der Schleife verwenden.

    Für dein Vorhaben ist die TextBox allerdings nicht unbedingt das Control der Wahl.

    Edit: VaporiZed war schneller :rolleyes:

    VaporiZed schrieb:

    Willkommen im Forum.

    Die Platte ist sogesehen einer von vielen Artikeln. Bsp. das "SE" ist bei der Platte der "Typ" und "196" die "Breite" usw. Das ist eher gesagt eine "Deko" dort und könnte man rauslöschen.

    Schmittmuthelm schrieb:

    Du setzt TextBox2.Text in deiner ForEach. Du überschreibst quasi mit jeder



    Danke euch beiden. Das ging ja mega schnell hier, freut mich! :D
    @niklasam Ebenfalls: Willkommen im Forum. :thumbup:
    Du musst nicht splitten und wieder zusammensetzen.
    TextBox hat eine Property .Lines, da bekommst Du jede Zeile einzeln in einem String-Array und genau so kannst Du die TextBox wieder befüllen.
    docs.microsoft.com/en-us/dotne…oxbase.lines?view=net-5.0
    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!