Label Text ändert sich trotz Anweisung nicht!

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

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

    Label Text ändert sich trotz Anweisung nicht!

    Moin Leute, ich habe ein Problem... Und zwar ich habe Labels eingefügt und sobald z.B. Label1 die Farbe Blau hat, soll sich Label2 auf die Farbe Grün ändern und der Text dazu dann auch anders sein. Problem: Programm macht es nicht! Ich habe das gleiche bei vorherigen Labels ebenfalls gemacht und bei dem geht das dann nicht mehr. Das ganze wird von Hotkeys unterstützt heißt, wenn ich Pfeiltaste rechts drücke und Label1 Blau ist --> Label2 Grün und anderer Text. Ich zeig euch mal den Code!

    Das sind die Farben, die die Labels per Taste runter und hoch bekommen

    Quellcode

    1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    2. If GetAsyncKeyState(Keys.Down) = -32767 Then
    3. If Label1.ForeColor = Color.Blue Then
    4. Label1.ForeColor = Color.Silver
    5. Label2.ForeColor = Color.Blue
    6. Label10.ForeColor = Color.Silver
    7. Label14.ForeColor = Color.Silver
    8. Exit Sub
    9. End If
    10. If Label2.ForeColor = Color.Blue Then
    11. Label2.ForeColor = Color.Silver
    12. Label1.ForeColor = Color.Silver
    13. Label10.ForeColor = Color.Blue
    14. Label14.ForeColor = Color.Silver
    15. Exit Sub
    16. End If
    17. If Label10.ForeColor = Color.Blue Then
    18. Label10.ForeColor = Color.Silver
    19. Label2.ForeColor = Color.Silver
    20. Label1.ForeColor = Color.Silver
    21. Label14.ForeColor = Color.Blue
    22. Exit Sub
    23. End If
    24. If Label14.ForeColor = Color.Blue Then
    25. Label14.ForeColor = Color.Silver
    26. Label1.ForeColor = Color.Blue
    27. Label10.ForeColor = Color.Silver
    28. Label2.ForeColor = Color.Silver
    29. Exit Sub
    30. End If
    31. End If
    32. 'Pfeiltaste hoch
    33. If GetAsyncKeyState(Keys.Up) = -32767 Then
    34. If Label2.ForeColor = Color.Blue Then
    35. Label2.ForeColor = Color.Silver
    36. Label1.ForeColor = Color.Blue
    37. Label10.ForeColor = Color.Silver
    38. Exit Sub
    39. End If
    40. If Label1.ForeColor = Color.Blue Then
    41. Label1.ForeColor = Color.Silver
    42. Label2.ForeColor = Color.Silver
    43. Label10.ForeColor = Color.Silver
    44. Label14.ForeColor = Color.Blue
    45. Exit Sub
    46. End If
    47. If Label14.ForeColor = Color.Blue Then
    48. Label14.ForeColor = Color.Silver
    49. Label1.ForeColor = Color.Silver
    50. Label2.ForeColor = Color.Silver
    51. Label10.ForeColor = Color.Blue
    52. Exit Sub
    53. End If
    54. If Label10.ForeColor = Color.Blue
    55. Label10.ForeColor = Color.Silver
    56. Label2.ForeColor = Color.Blue
    57. Label14.ForeColor = Color.Silver
    58. Label1.ForeColor = Color.Silver
    59. Exit Sub
    60. End If
    61. End If



    Und das ist der Code wenn ich nach links und rechts drücke! Und da hab ich euch markiert ab wo es nicht mehr geht!

    Quellcode

    1. Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    2. If GetAsyncKeyState(Keys.Right) = -32767 Then
    3. If Label1.ForeColor = Color.Blue Then
    4. Label3.ForeColor = Color.Lime
    5. Label3.Text = "[On]"
    6. 'Funktion
    7. Exit Sub
    8. End If
    9. If Label2.ForeColor = Color.Blue Then
    10. Label4.ForeColor = Color.Lime
    11. Label4.Text = "[On]"
    12. 'Funktion
    13. Exit Sub
    14. End If
    15. If Label10.ForeColor = Color.Blue Then
    16. Label9.ForeColor = Color.Lime
    17. Label9.Text = "[On]"
    18. 'Funktion
    19. End If
    20. Exit Sub
    21. If Label14.ForeColor = Color.Blue Then '//////////AB HIER TRITT DER FEHLER AUF!!
    22. Label15.ForeColor = Color.Lime
    23. Label15.Text = "[On]"
    24. 'Funktion
    25. Exit Sub
    26. End If
    27. End If
    28. '///////////////////////OFF///////////////////
    29. If GetAsyncKeyState(Keys.Left) = -32767 Then
    30. If Label1.ForeColor = Color.Blue Then
    31. Label3.ForeColor = Color.Red
    32. Label3.Text = "[Off]"
    33. 'Funktion
    34. Exit Sub
    35. End If
    36. If Label2.ForeColor = Color.Blue Then
    37. Label4.ForeColor = Color.Red
    38. Label4.Text = "[Off]"
    39. 'Funktion
    40. Exit Sub
    41. End If
    42. If Label10.ForeColor = Color.Blue Then
    43. Label9.ForeColor = Color.Red
    44. Label9.Text = "[Off]"
    45. ForceHostTMR.Stop()
    46. Exit Sub
    47. End If
    48. If Label14.ForeColor = Color.Blue Then
    49. Label15.ForeColor = Color.Red
    50. Label15.Text = "[Off]"
    51. 'Funktion
    52. End If
    53. Exit Sub
    54. End If
    55. End Sub



    Ich hoffe ihr könnt mir helfen! ?(
    @ViiperCoding Willkommen im Forum. :thumbup:
    Ich nehme mal an, dass Dein Timer mit 10 Millisekunden da losrattert.
    Solch Code hat in einer Timer-Tick nix zu suchen, denn primär fragst Du die Cursortasten ab, nicht aber Du hast eine Timing-Vorgabe.
    Wie wäre es, wenn Du das KeyDown-Event Deiner Form abfragst, gib der Form zusätzlich im Designer KeyPreview = True.

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
    2. If e.KeyCode = Keys.Up Then
    3. '...
    4. End If
    5. '...
    6. End Sub

    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!
    Danke für deine Antwort! Die Idee von dir sieht irgendwie sogar noch "geschmeidiger" aus und ich glaub dann mach ich es auf diese Art :thumbsup: Aber hast du evtl trotzdem eine Ahnung, was der Grund sein könnte, dass es bei den ersten 3 Labels Funktioniert aber dann ab dem 4. nicht mehr? ?(
    @ViiperCoding Wie groß ist Dein Timer-Interrvall?
    Ändere es mal auf 100.
    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!
    Post 1, Zeile 5-7: "Wenn Label1 blau ist, mach es silber und Label 2 blau"; Zeile 12-14: "Wenn Label2 blau ist, mach es silber und Label 1 blau" -> Deine Anweisungen machen Deine Erstveränderungen wieder rückgängig. Ist da vielleicht in Zeile 12 ein ElseIf gemeint, wobei das End If in Zeile 11 weg sollte?
    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 schrieb:

    Post 1, Zeile 5-7: "Wenn Label1 blau ist, mach es silber und Label 2 blau"; Zeile 12-14: "Wenn Label2 blau ist, mach es silber und Label 1 blau" -> Deine Anweisungen machen Deine Erstveränderungen wieder rückgängig. Ist da vielleicht in Zeile 12 ein ElseIf gemeint, wobei das End If in Zeile 11 weg sollte?


    Da hast du dich glaube ich verschaut :D Das ist Label10, das als nächstes Blau wird und nicht 1 :D
    Inwieweit bist du mittm Visualstudio vertraut?
    Normal sollteste den Fehler mit Leichtigkeit im Einzelschrittmodus finden können - erst Threading oder sich gegenseitig beeinflussende Events können derlei Debugging erschweren.

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

    Um die Ursprungsfrage zu beantworten: Post 1, Codeblock 2, Zeile 23, 24: Da hast Du Exit Sub und End If vertauscht, das Exit Sub gehört in den If-Block. Sonst wird der letzte SwitchOn-Teil gar nicht ausgeführt.
    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.
    Potzblitz - AdlerAuge!! :thumbsup:

    @TE: nochmal die Empfehlung, dich mit Debugging vertraut zu machen.
    Weil Eiglich müsste die Codestelle bei dir unterkringelt sein, mit der Intellisense-Information: "Unreachable Code detected!"
    (Und natürlich wärst du im Einzelschritt-Modus ebenfalls sofort darauf gestossen)

    ViiperCoding schrieb:

    Habs auf 1 gestellt, da es direkt nach drücken der Taste umstellen soll
    Das ist eine Millisekunde, da kann nix laufen :!:

    RodFromGermany schrieb:

    Ändere es mal auf 100.
    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!