Eigenschaft .Text in For Next ändern lassen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von HerbertTestmann.

    Eigenschaft .Text in For Next ändern lassen

    Hallo

    ich möchte gern etwas Schreibarbeit sparen und für mehr Übersicht sorgen. Im Moment sieht mein Quellcode so aus ...
    Dim Ziel(8) AsString
    Dim check(8) AsBoolean
    Dim PCname(8) AsString


    check(1) = CheckBox1.CheckState
    check(2) = CheckBox2.CheckState
    check(3) = CheckBox3.CheckState
    ...

    PCname(1) = My.Settings.name1
    PCname(2) =
    My.Settings.name2
    PCname(3) =
    My.Settings.name3
    ...

    Ziel(1) = My.Settings.Ziel1
    Ziel(2) =
    My.Settings.Ziel2
    Ziel(3) =
    My.Settings.Ziel3
    ...

    Ich mnöchte die Zuweisungen in je einer For Next Schleife erledigen. Allerdings komme ich mit der Syntax nicht klar.
    For n = 1 to 50
    check(n) = CheckBoxn.CheckState
    next

    For n = 1 to 50
    PCname(n) = My.Settings.namen
    next

    For n = 1 to 50
    Ziel(n) = My.Settings.Zieln
    next



    Das es so nicht funktionieren kann, ist mir klar. Ich habe nur leider nicht die geringste Idee, wie es gehen könnte :(
    von " " über (n.toString) oder ("n") habe ich schon einiges probiert. leider erfolglos.


    Ideen?


    Danke

    Beim Thema dachte ich eigentlich an sowas wie

    Button1.text=StringVariable(1)
    Button2.text=StringVariable(2) :)
    Für die Checkboxen:

    VB.NET-Quellcode

    1. For i= 0 To EndZahlDieIchJaNichtKenne
    2. check(i) = Me.Controls("CheckBox" & i).CheckState
    3. Next


    Und für die Settings:

    VB.NET-Quellcode

    1. For i= 0 To HöchsteZahl
    2. PcName(i) = My.Settings("name" & i)
    3. Ziel(i) = My.Settings("Ziel" & i)
    4. Next


    Müsste eigentlich funktionieren. 8-)

    Hoffe, du ersparst dir dadurch deine Schreibarbeit. :thumbsup:

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

    @VB_Gamer das funktioniert nicht, Du bekommt sofort einen Error da die Elemente in der ControlCollection vom Typ "Control" sind, also nur Namen/Text/Typ haben aber keinen CheckState. Du musst vorher überprüfen und dann casten:

    VB.NET-Quellcode

    1. For Each Control In Me.Controls
    2. If Control.GetType.Name = "CheckBox" Then
    3. Dim chkBox As CheckBox = CType(Control, CheckBox)
    4. Debug.Print(chkBox.Checked.ToString)
    5. End If
    6. Next

    Dann braucht man auch die Anzahl nicht :)

    @ThreadErsteller warum tippen wenn man es auch elegant lösen kann ? Und manchmal weiss man ja noch nicht einmal wieviel Checkboxen gerade da sind.

    Übrigens gilt obiger Code natürlich nur dann wenn die CB direkt auf der Form liegen und nicht in einem Panel.
    Hallo

    das mit den Namen und Zielen aus my.settings funktioniert. Sehr schön. Ich hatte immer einen "." zu viel.

    Das mit den check boxen funktioniert im Prinzip auch, aber woher weiss ich, welche der check Boxen abgefragt wird und wie bekomme ich den Wert in meine Variable check(1...x) ??
    An der Stelle

    VB.NET-Quellcode

    1. Debug.Print(chkBox.Checked.ToString)

    kannst Du alle Eigenschaften der checkBox abfragen,z.B. Name , Tag, chkBox.checked , sogar die Methoden ausführen.

    Wenn im Namen der Index vorhanden ist ("checkbox11") die 11 mit Regex extrahieren oder von vornherein den Index im Tag mitgeben.

    Nur: brauchst Du Deinen künstlichen Index überhaupt ?
    Nur: brauchst Du Deinen künstlichen Index überhaupt ?

    das weiss ich nicht so genau. Ich bin ja Anfänger und versuche das Problem so zu lösen, wie ich es verstehe.

    Es gibt 10 Zeilen mit daten, die jeweils eine Checkbox enthalten. Beim Click auf den Button GO macht dann das Hauptprogramm mit den daten pro Zeile etwas, in Abhängigkeit von der Checkbox.

    Quellcode

    1. For n As Integer = 1 To 10
    2. If check(n) Then
    3. FileCopy(tbxQuelle.Text, Ziel(n))
    4. End If
    5. Next