Forecolor wechsel mehrerer Labels

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Fakiz.

    Forecolor wechsel mehrerer Labels

    Hallo zusammen
    Habe eine dumme Frage. Ich Habe mehrere Labels die ich per Button Klick nacheinander in eine andere Farbe wechseln möchte.

    Wer kann mir helfen...

    Das war meine Idee, klappt natürlich nicht. :S

    VB.NET-Quellcode

    1. Dim Wechsel(6)
    2. Wechsel(0) = L1.Text
    3. Wechsel(1) = L2.Text
    4. Wechsel(2) = L3.Text
    5. Wechsel(3) = L4.Text
    6. Wechsel(4) = L5.Text
    7. Wechsel(5) = L6.Text
    8. Static Wählen As Integer = 0
    9. ForeColor.Red= Wechsel(Wählen)
    10. Wählen = Wählen + 1
    11. If Wählen > 5 Then Wählen = 0
    @Otti So was:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private index As Integer = 0
    3. Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim lbl() = {Label1, Label2, Label3}
    5. Dim col() = {Color.Red, Color.Lime, Color.Blue}
    6. For i = 0 To lbl.Length - 1
    7. Dim ii = (i + index) Mod lbl.Length
    8. lbl(i).ForeColor = col(ii)
    9. Next
    10. index += 1
    11. End Sub
    12. End Class
    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!
    Dann kannste das so machen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private labels() As Label
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Static counter As Integer = -1
    4. counter += 1
    5. If counter > labels.Length - 1 Then
    6. counter = 0
    7. End If
    8. For i As Integer = 0 To labels.Length - 1
    9. If i = counter Then
    10. labels(i).ForeColor = Color.Red
    11. Else
    12. labels(i).ForeColor = SystemColors.ControlText
    13. End If
    14. Next
    15. End Sub
    16. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    17. labels = {Label1, Label2, Label3, Label4, Label5, Label6}
    18. End Sub


    Oder auch vorm erhöhen der counter Variable lables(counter) die default color zuweisen(wenn counter > -1), dann counter erhöhen und lables(counter).ForeColor = Color.Red
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private labels() As Label
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Static counter As Integer = -1
    4. If counter > -1 Then
    5. labels(counter).ForeColor = SystemColors.ControlText
    6. End If
    7. counter += 1
    8. If counter > labels.Length - 1 Then
    9. counter = 0
    10. End If
    11. labels(counter).ForeColor = Color.Red
    12. End Sub
    13. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    14. labels = {Label1, Label2, Label3, Label4, Label5, Label6}
    15. End Sub

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

    Wenn das in einer anderen Funktion/Methode sein soll, pack counter auf Klassen-Ebene, labels ist schon auf klassenebene, dann ist labels(counter) das mit Forecolor.Red

    Ansonsten siehe den 2. Code, da setze ich erst das Label das Rot ist wieder auf default color.

    Otti schrieb:

    Bei 6 Labels, pro Klick, soll erst Label1 rot werden, beim zweiten Klick Label 2 rot usw.
    Du hast die Variable Index, somit ist doch alles vorgegeben.
    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!
    @Otti ForeColor.Red= Wechsel(Wählen) das funktioniert natürlich nicht. Du versuchst hier ja der Farbe Rot deinen Text aufzudrücken.
    Du willst ja deinem Text die Farbe Rot aufdrücken also müsstest du das umdrehen: Wechsel(Wählen).ForeColor = Color.Red