Mehrere Textboxen in einer for Schleife ?

  • Allgemein

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Overload84.

    Mehrere Textboxen in einer for Schleife ?

    Hallo Leutz,

    ich befinde mich grad wieder an einer Hürde die ich, wahrscheinlich durch einen Denkfehler, nicht umgehen kann.
    Ich möchte gern mehrere TextBoxen mit verschiedenen Namen aber auch mehrere gleiche tbs mit anderen Zahlen auslesen und Aktionen durchführen.

    Ums mal auf den Punkt zu bringen habe ich eine Form in der 7 Groupboxen für 7 Tage in der Woche drauf sind.
    Die Tage können von 1 bis 7 eingestellt werden.
    In den Groupboxen sind 4-5 Textboxen die ich auslesen muss.
    Demnach habe ich z.B. 7 Textboxen die tbTagesstunden1, tbTagesstunden2 usw. heißen.
    Und 35 mal den Quellcode ändern finde ich etwas..... unpraktisch.

    Wie kann ich denn nun die ganzen tbs ansprechen ohne jeden Namen einzeln zu schreiben ?
    Dazu kommt, dass wenn ich

    VB.NET-Quellcode

    1. dim zähler as integer = 0
    2. for zähler = 1 to cbWochentage.text
    3. next zähler


    um die ganze Sache bastel, schreibt er einmal eine Tabelle, beim 2. mal dann 2 beim 3. mal dann 3 usw.

    VB.NET-Quellcode

    1. positionprintnest.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT
    2. positionprintnest.AddCell(New Phrase("Grundstunden: " & tbTagesstunden1.Text & " x Grundstundensatz 30,00 EUR = " & tbTagesstunden1.Text * stundenlohn & "€", standardschrift))
    3. If tbNachtstunden1.Text > 0 Then
    4. positionprintnest.AddCell(New Phrase("- Nachtzuschlag: " & tbNachtstunden1.Text & " Stunde/n * Nachtzuschlag (20%) von " & tbNachtstunden1.Text * stundenlohn & " € = " & (tbNachtstunden1.Text * stundenlohn / 100 * 20) & " €", standardschrift))
    5. End If
    6. If tbWochenendstunden1.Text > 0 Then
    7. positionprintnest.AddCell(New Phrase("- Wochenendzuschlag: " & tbWochenendstunden1.Text & " Stunde/n * Wochenendzuschlag (20%) von " & tbWochenendstunden1.Text * stundenlohn & " € = " & (tbWochenendstunden1.Text * stundenlohn / 100 * 20) & " €", standardschrift))
    8. End If


    Desweiteren, ich benutze iTextSharp um pdf dateien zu schreiben. dafür das pdfdoc.addcell

    p.S. Die rechenwege werde ich natürlich noch auslagern (Der Quellcode oben is aus dem ersten Test mit iTextSharp)

    VB.NET-Quellcode

    1. For Each tb As Control in Me.Controls().OfType(Of TextBox)()
    2. tb.Text = "Test" 'Hier dann irgendeine Eigenschaft.
    3. Next


    Zudem stell Option Strict auf On. Ein Text ist ein String und keine Zahl, also konvertiere bitte vorher mit Integer.TryParse ;) Jedoch sind so viele TextBoxen bestimmt besser lösbar.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ () aus folgendem Grund: Code ein wenig eingerückt

    Falls mans dir noch nicht empfohlen hat: Option Strict On! ;)

    Und dann würde ich empfehlen, dass du deine Datenverarbeitung als Datenverarbeitung aufziehst, also deine Daten in einem typisierten Dataset organisierst.
    Es scheint sich ja um eine Tabelle mit 5 Spalten zu handeln.
    Und dann mit Databinding daran-gehen - vlt erstmal ein Datagridview dran binden - später vlt. auf DataRepeater umstellen.
    vlt. gugge Daten laden, speichern, verarbeiten
    Jaja, ich mach ja Strict schon an =)

    Was wäre denn, wenn ich die ganzen Werte der tbs in ein Array lade und von dort aus mit dem zähler die werte mit der for schleife auslese ?



    Also quasi:

    VB.NET-Quellcode

    1. dim tbarray[2] = {tb1.text, tb2.text, tb3.text}
    2. for zähler = 1 to 2
    3. pdfdoc.adcell(tbarray[zähler], schriftart)
    4. next zähler


    vorher natürlich in int geparst...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Overload84“ ()

    Hallo Leutz,

    ich hab die Lösung gefunden.
    Erst habe ich die strings in int geparst und dann alle werte in ein Array gepackt.
    Mit einer For Schleife habe ich es dann tatsächlich geschafft die Felder 0-6 auszulesen und als Zellen in die *.pdf File zu packen.
    Danke für die Denkanstöße :thumbsup: