Button-Click---Variable---Performclick()

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Button-Click---Variable---Performclick()

    Hallo, ich versuche meine Frage zu formulieren, mir fehlen die Fachbegriffe....
    Ich habe es in Bild und Code Form zur Darstellung gemacht

    Quellcode

    1. Public Class Form1
    2. Dim farbe1 As String
    3. Dim farbe2 As String
    4. Dim count As Integer
    5. 'Buttons Farbe 1
    6. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    7. farbe1 = "rot"
    8. End Sub
    9. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    10. farbe1 = "grün"
    11. End Sub
    12. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    13. farbe1 = "blau"
    14. End Sub
    15. 'Buttons Farbe 2
    16. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    17. farbe2 = "rot"
    18. End Sub
    19. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    20. farbe2 = "grün"
    21. End Sub
    22. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
    23. farbe2 = "blau"
    24. End Sub
    25. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    26. count = count + 1
    27. 'angenommen wir haben oben farbe1=grün und farbe2=blau
    28. 'Abfrage
    29. 'ist count gerade dann
    30. Button2.PerformClick() 'einfacher wäre doch wenn farbe1 den Namen des Buttons kennt und hier steht farbe1.PerformClick()
    31. Button5.PerformClick()
    32. 'else
    33. Button3.PerformClick()
    34. Button6.PerformClick()
    35. 'ich könnte jetzt eine lange If schreiben.....
    36. 'if farbe1=grün then Button2.PerformClick() usw usw.
    37. 'geht das nicht einfacher?
    38. End Sub
    39. End Class


    Ich hoffe es ist etwas verständlich was ich meine,
    Danke Heiko
    Bilder
    • Unbenannt-2.png

      15,5 kB, 579×390, 43 mal angesehen
    Warum heißen die Buttons Button1 usw.? Gute Benennung ist ein wichtiger Punkt.
    PerformClick - jedes Mal, wenn ich das sehe, denk ich mir nur: wozu wurde der Blödsinn eingeführt?

    Was soll das Programm denn inhaltlich eigentlich machen?
    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.
    ​wozu wurde der Blödsinn eingeführt?

    wenn ich unter dem Button Click Ereignis Werte zuordne, diese dann evtl an einen Empfänger sende, dazu noch in der Form/Oberfläche irgendwelche Sachen farblich ändere oder Slider Values zuordne, DANN kann ich das von überall im Programm einfach mit einem PerformClick Event auslösen, find ich nicht unnütz.
    Meines Erachtens sollte es aber so laufen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. ChangeFirstColorToRed()
    3. End Sub
    4. Private Sub ChangeFirstColorToRed()
    5. farbe1 = "rot"
    6. End Sub

    Dann kann man nämlich in anderen Methoden ebenfalls ChangeFirstColorToRed() aufrufen und muss nicht überlegen, was da bei Button1.PerformClick so alles passiert. Denn der Name der Methode sagt bereits sehr detailliert, was dann passiert: Die erste Farbe wird zu Rot.
    Und was Dein Programm nun machen soll, weiß ich immer noch nicht, daher keine sinnvolle Hilfe möglich.
    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.
    Ich habe verstanden was du meinst, ich schreibe das gerade um, ist recht viel zu tippen.....
    Ich mach jetzt unter dem ButtonClick Ereignis ein Event mit Übergabe von Werten, wie in deinem Bsp.
    nur eben
    ChangeColor1(11,127,0,0)...so in der Art

    diese "Auswert"Sub kann ich ja später auch mit entsprechenden Werten aufrufen

    Danke, guter Hinweis von dir....

    VaporiZed schrieb:

    wozu wurde der Blödsinn eingeführt?
    Button1_Click(...) funktioniert immer.
    Button1.PerformClick() funktioniert nur, wenn der Button sichtbar und enabled ist.
    @kollimann Du brauchst keinen Timer, wenn Du beim Klicken die betreffende Prozedur aufrufst.
    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!
    Öhm … und inwieweit begründet diese Aussage den Sinn von PerformClick?
    Das mit dem Timer interpretier ich als gewollt, der Zusammenhang mit den ButtonClicks ist wohl nur eine Krücke, um die Farben zu ändern.
    Was das Programm aber überhaupt machen, bleibt weiter im Dunkeln, daher bin ich stiull, bis da ne konkrete, detaillierte Beschreibung vom TE kommt, sonst ist das hier für mich voradventliches Spekulatiusbacken.
    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 die Äquivalenz zum Drücken des Buttons mit der Maus im Gegensatz zur generellen Abarbeitung einer Prozedur.
    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!
    Das ist mir durchaus bewusst. Ich kann mir trotzdem keine sinnvolle Verwendung dafür vorstellen. Hat jemand ein praktisches und sinnvolles Beispiel dafür? UIAutomation zählt nicht ;)
    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.
    Das ist Teil einer Lichtsteuerung.
    Sinn Beispielhaft.......
    Farbe1 = Lampen 1.Reihe, Farbe2=Lampen 2.Reihe
    1.Reihe soll rot leuchten, also Farbe anwählen im Bild links (bei klickButton werden entsprechende Werte in Variablen1 gesetzt, RGB z.B. 127,0,0)
    2.Reihe soll blau leuchten also Farbe anwählen im Bild rechts (bei klickButton werden entsprechende Werte in Variablen2 gesetzt, RGB z.B. 0,127,0)
    per Tasten für Reihe1 und Reihe2 (NICHT IM BILD) manuell Lampen an aus in gewählter Farbe mit den Werten der Variablen 1 oder 2, je nach Taste.

    Der Timer, wenn auto Modus, TimerTick - 1.Durchlauf = ALLE LAMPEN mit gewählter Farbe 1, 2.Durchlauf = ALLE LAMPEN mit gewählter Farbe 2 , und so weiter im Wechsel.
    Da ich die Werte im Sub ButtonClick Ereignis hatte, wollte ich den Auto Modus einfach mit dem PerformClick Event auslösen, das habe ich jetzt geändert, so wie im beispiel oben von VaporiZed......
    funktioniert alles Problemlos

    Danke