Dynamisches Objekt auslesen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von GullyBO.

    Dynamisches Objekt auslesen

    Eine während der Laufzeit erstellte Textbox auslesen

    hi

    Ich habe eine Unbestimmte Anzahl an Textboxen welche durch einen klick von dem Benutzer auf einen Button erstellt werden.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim txtbx As New TextBox
    3. With txtbx
    4. .Location = New Point(115, 26 * num + 12)
    5. .Width = 255
    6. .Parent = Me
    7. End With
    8. num = num + 1
    9. End sub

    Der nutzer soll die Textboxen ausfüllen. Danach soll der Benutzer auf den Button "Speichern" klicken wodurch eine Funktion "Save()" ausgeführt wird. Bei dieser Funktion soll ein "SaveSetting()" so oft ausgeführt werden bis alle existierenden Textboxen abgespeichert wurden.

    VB.NET-Quellcode

    1. Private Function Save()
    2. Dim cnt1 As Integer
    3. While cnt1 < num
    4. SaveSetting("Programm", "Optionen", "wert" & cnt1 + 1, Textbox ????)
    5. End While
    6. End Function


    Nun weiß ich leider nicht wie ich an der Stelle mit den Fragezeichen weiter verfahren soll.
    Wie kann ich an dieser Stelle nun die Textbox auslesen um dessen Inhalt in der Registry abzuspeichern?
    Muss ich am Ende Komplett neu ansetzen und mit Arrays arbeiten?

    Danke
    @Eistee: Dein Lösungsvorschlag ist irgendwie nicht das wahre vom Ei... Das gibt nur Wuselcode...

    Beim Erstellen der Listboxen müsstest du einen Verweis auf diese Textbox-Instanz speichern. Ich hab grad keine IDE zur Hand, deswegen aus dem Kopf:

    VB.NET-Quellcode

    1. Private meineVerweise as new list(of TextBox) 'Die Verweis-Listbox Instanzweit zugänglich machen
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Dim txtbx As New TextBox
    4. meineVerweise.add(txtbx) 'Den Verweis speichern
    5. With txtbx
    6. .Location = New Point(115, 26 * num + 12)
    7. .Width = 255
    8. .Parent = Me
    9. End With
    10. num = num + 1
    11. End sub
    12. Private Function Save()
    13. Dim cnt1 As Integer
    14. For each eineTextBox as Textbox in meineVerweise 'Alle Verweise durchgehen
    15. SaveSetting("Programm", "Optionen", "wert" & cnt1 + 1, eineTextBox.text)
    16. next
    17. End Function


    Ohne IDE ist das ganz schön blöd, ich hoffe, es hilft dir trotzdem.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Enixus“ ()

    Das gibt nur Wuselcode...

    Es hat niemand nach einer C&P lösung für den direkt einbau in das fertige Programm gefragt.
    Der TE wollte m. M. n. nur wissen wie man ein dyn. erstelltes Control ansprechen kann.

    Textbox einen Namen geben und fertig, bei dir sind die Textboxen nur in einer Liste.
    Total unpersönlich und oberflächlich 8-)

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Eistee“ ()

    Eistee schrieb:

    Textbox einen Namen geben und fertig, bei dir sind die Textboxen nur in einer Liste.
    Total unpersönlich und oberflächlich 8-)

    LOL- klingt durchaus sinnvoll. Dann ist meine Variante eher die Bundeswehr-Variante. Da reicht ein: "Sie da!". :)

    @xtts02: Der Thread-Ersteller postete nur Code-Schnipsel.
    Au Supa :thumbsup:

    Es hat geklappt! Ich habe den Tipp von @Enixus benutzt, es hat mir sehr weitergeholfen, Dankeschön.

    @Eistee: Deine Lösung hat mir leider nicht geholfen, Wenn ich eine Textbox in Code zu stehen habe die es noch nicht gibt, magt das VB nicht.

    @xtts02: Ja, das stimmt, ich stehe zur zeit mit dem Programm noch am Anfang, Ich habe aber später noch vor eine rückgabe einzusetzen.