Strings und Textboxen in einer Schleife austauschen

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    Strings und Textboxen in einer Schleife austauschen

    Hallo.
    Ich möchte verschiedene Strings die ich in My.Settings gespeichert habe in verschiedene Textboxen einschreiben. Ich möchte das allerdings in eine Schleife packen da mir

    VB.NET-Quellcode

    1. TextBox2.Text = My.Settings.Serv1
    2. TextBox4.Text = My.Settings.Serv2
    3. TextBox6.Text = My.Settings.Serv3
    4. TextBox8.Text = My.Settings.Serv4
    5. TextBox3.Text = My.Settings.Serv1IP
    6. TextBox5.Text = My.Settings.Serv2IP
    7. TextBox7.Text = My.Settings.Serv3IP
    8. TextBox9.Text = My.Settings.Serv4IP

    ein wenig zu.... .. schlecht gelöst ist.

    Ich hatte mir etwas vorgestellt wie:

    VB.NET-Quellcode

    1. Dim Servers As Array = {My.Settings.Serv1, My.Settings.Serv2, My.Settings.Serv3, My.Settings.Serv4} 'Das sind die Strings
    2. Dim MyListOfTextBoxes() As TextBox = {TextBox2, TextBox4, TextBox6, TextBox8} 'Das sind die Textboxen in deren Text ich die Strings reinschreiben will
    3. For i = 1 To Servers.length
    4. MyListOfTextBoxes(i).Text = Servers(i)
    5. Next


    Aber leider krieg ich immer eine "Nullreferenz". Kann mir jemand weiterhelfen?

    Danke
    Danke erstmal :] Ich hab das nun mal umgesetzt und kriege in der Fehlermeldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." Vielleicht müssen die Arrays irgendwie anders sein wegen dem "As Textbox" und "As Array". Ich kenne mich leider nicht so gut aus.. Weiß jemand weiter?
    Huhu,

    Du sparst Dir doch so absolut keine Tipparbeit.

    Mein Vorschlag.

    Selektiere eine TextBox im Designer, im Property-Fenster ist ganz oben Application-Settings und da kannst Du das Setting an die Text-Property der Textbox binden.

    0 Code geschrieben und ist ne saubere Lösung.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Der Code sieht dann so aus:

    VB.NET-Quellcode

    1. For i = 0 To Servers.Length - 1
    2. MyListOfTextBoxes(i).Text = Servers(i)
    3. Next


    Also das mit den Application Settings hat geklappt. Danke ;D Trotzdem müsste ich auch die Lösung für mein Problem aus dem 1. Beitrag kriegen, da ich eine sehr ähnliche Schleife noch mit einer Funktion in meinem Programm gebrauche.

    Danke
    Als aller erstes machst Du bitte Option Strict auf ON. Link in meiner Signatur. Das ist mal wichtig.

    Du deklarierst Deine Server als Array. Das ist mal grundlegend falsch. In Deinen Settings stehen Strings, also deklariere es auch so.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. Dim servers() As String = {My.Settings.String1, My.Settings.String2, My.Settings.String3, My.Settings.String4}
    4. Dim tBoxes() As TextBox = {Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.TextBox4}
    5. For i As Integer = 0 To servers.Length - 1
    6. tBoxes(i).Text = servers(i)
    7. Next
    8. End Sub
    9. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Das hört sich schonmal gut an ;) Leider krieg ich noch diesen Error im Direktfenster: "Eine Ausnahme (erste Chance) des Typs "System.NullReferenceException" ist in Indernet Client.exe aufgetreten." Ich hab allen Strings irgend einen Wert gegeben deswegen weiß ich nicht was noch falsch ist..

    EDIT: Hab es doch noch geschafft. Da ich nun die Arrays erst in der Funktion erstelle, funktioniert es. Vielen Dank :DD
    Warum pachst Du Deine Settings-Strings nicht in eine System.Collections.Specialized.StringCollection?
    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!
    Habe noch ein weiteres, ähnliches Problem:

    VB.NET-Quellcode

    1. Public Function SaveIPsettings() As Object
    2. Dim servers() As String = {My.Settings.Serv1, My.Settings.Serv2, My.Settings.Serv3, My.Settings.Serv4}
    3. Dim ips() As String = {My.Settings.Serv1IP, My.Settings.Serv2IP, My.Settings.Serv3IP, My.Settings.Serv4IP}
    4. Dim serverstextboxes() As TextBox = {Me.TextBox2, Me.TextBox4, Me.TextBox6, Me.TextBox8}
    5. Dim ipstextboxes() As TextBox = {Me.TextBox3, Me.TextBox5, Me.TextBox7, Me.TextBox9}
    6. For i As Integer = 0 To servers.Length - 1
    7. servers(i) = serverstextboxes(i).Text
    8. ips(i) = ipstextboxes(i).Text
    9. Next
    10. End Function


    Leider werden die Werte in ips(i) und servers(i) leider nicht eingetragen. Kann mir jemand helfen?
    Hey,

    jetzt mal im Ernst. Du "wurschtelst" ganz schön rum :) Aber gut, versuchen wir es mal. Weisst Du, was debuggen ist? Wenn ja, warum setzt Du nicht einfach einen Haltepunkt und überprüfst die Werte. In Deinem servers()-Array stehen nämlich schon Werte drin. Kann es sein, dass eigentlich nur nochmal die selben Werte reingeschrieben werden?
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Es schreibt die richtigen Werte in die Arrays. Wenn ich es dann allerdings später diese Funktion aufrufe, um meine IPs in den Textboxen anzuzeigen, werden die alten Werte geladen, obwohl ich gehofft hatte, dass die neuen Werte nun in My.Settings.x drin sind. Kann es sein, das ich mit meiner Funktion die Werte von textbox(i).text nicht in die my.settings.x schreiben kann?
    OPTION STRICT hast immer noch nicht auf ON, oder? Warum verwendest Du eine Function und gibst ein Object zurück, was Du ja doch nicht zurück gibst?

    Du kannst Deine Settings so nicht speichern. Du hast String-Objekte im servers()-Array, nicht die Settings. Es sind nur die Werte der Settings. So funktioniert das nicht.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    RodFromGermany schrieb:

    Warum pachst Du Deine Settings-Strings nicht in eine System.Collections.Specialized.StringCollection?


    Da hast Du Deine Antwort schon gestern bekommen.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o