Button Klick, Label ändern

  • VB.NET

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

    Button Klick, Label ändern

    Guten Abend zusammen.
    Schnelle einfache Frage zu meinem laufendem Projekt
    Ich habe einen Button (BT1) und sieben Labels (LB1-LB7) die passend zum Gartenprojekt benannt sind (Garten, Laube, Baum, Maus, Vogel usw. "werden alle in Forecolor.Black angezeigt")
    Möchte mit Klick auf BT1 das , dass erste Label (Garten) in Forecolor.Green angezeigt wird, bei einem weiterem Klick, das zweite Label (Laube) in Forecolor.Green usw.
    Mit einem zweiten Button (BT2) klick, sollen alle Labels wieder in Forecolor.Black zurück gesetzt werden, egal wieviel Themennamen im Vorfeld in Forecolor.Green waren.
    Wer kann mir helfen?
    @Otti Pack in ein Color-Array die Farben in der richtigen Reihenfolge und setze einen Zähler auf 0.
    Beim Klick holst Du den Zähler und setzt die zum Zähler gehörenden Farben und erhöhst den Zähler um 1.
    Wenn Du am Ende des Arrays angelangt bist, setzt Du den Zähler wieder auf 0.
    Das mit dem zweiten Button bekommst Du nun auch allein hin.
    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!
    Hey, @RodFromGermany
    Hatte es in der Zeit so gelöst, gibt doch bestimmt eine elegantere Lösung oder?

    VB.NET-Quellcode

    1. ​Static zaehler As Integer
    2. zaehler += 1
    3. If zaehler = 1 Then
    4. Label1.ForeColor = Color.Green
    5. End If
    6. If zaehler = 2 Then
    7. Label2.ForeColor = Color.Green
    8. End If
    9. If zaehler = 3 Then
    10. Label3.ForeColor = Color.Green
    11. End If
    12. If zaehler = 4 Then
    13. Label4.ForeColor = Color.Green
    14. End If


    Mit BT2 würde ich sagen zaehler = 0
    Setz die Labels in ein Array und geh sie durch:

    VB.NET-Quellcode

    1. Private CurrentLabelIndex As Integer = 0
    2. Private Labels As New List(Of Label)
    3. Private Sub DeinForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. Labels.AddRange({Label1, Label2, Label3, Label4})
    5. End Sub
    6. Private Sub ColorizeNextLabel()
    7. If CurrentLabelIndex = Labels.Count Then Return 'oder von vorn beginnen?
    8. Labels(CurrentLabelIndex).ForeColor = Color.Green
    9. CurrentLabelIndex += 1
    10. End Sub


    Otti schrieb:

    Mit BT2 würde ich sagen zaehler = 0
    Nicht raten. Welchen direkten Einfluss soll das Zurücksetzen des Zählers auf die Labelfarbe haben? Hat keinen, von daher ist Deine Vermutung falsch.
    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.
    Prinzipiell ja. Allerdings sollte CurrentLabelIndex = 0 außerhalb der For-Schleife platziert werden. Sonst wird ja bei 20 Labels der Zähler 20x auf 0 gesetzt. Geht schon. Aber einmal reicht ja ;)
    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.
    @VaporiZed
    Hey, Danke für die Hilfreichen Tipps.
    Habe ich geändert, danke di

    Hätte nur noch eine Frage.
    Wenn das letzte Label erreicht ist, frage ich es über den index ab, allerdings geht dies nur einmal.
    Sprich ich möchte, wenn ich beim letzten Label bin und erneut auf den Button klicke das erneut meine MSGBOX aufgeht.

    Otti schrieb:

    eine elegantere Lösung oder?
    Leider bin ich zu dumm, Dir eine komplette Lösung zu posten, so dass Du immer noch nachdenken musst, um aus meinen Worten die Lösung zu generieren. Sorry.

    Otti schrieb:

    allerdings geht dies nur einmal.
    Da gibt es in Basic einen Befehl der heißt If - Then (zu deutsch: Wenn - Dann).
    Wenn also ein Zustand erreicht ist, das wäre bei Dir der letzte Zustand, dann musst Du etwas tun, z.B. den Zähler auf 0 (Null) zurücksetzen.
    Das findest Du bereits in Zeile 3 des Postes #2.
    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!