1 Button, 2 Funktionen

  • VB.NET

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

    1 Button, 2 Funktionen

    Hallo,
    meine derzeitige Windows-Form sieht so aus:



    Ich möchte, dass man in die Textbox eine Uhrzeit eintragen kann (hier im Bsp. ist es 18:00 Uhr). Wenn die angegebene Zeit mit der jetzigen Zeit übereinstimmt, dann soll die Aktion ausgeführt werden, die sich hinter des jeweiligen Radio-Buttons befindet (z. B. mehrere MsgBoxen anzeigen). Die Überprüfung der Zeit habe ich durch einen Timer realisiert, der jede Sekunde die angegebene Zeit mit der jetzigen überprüft... das ganze soll allerdings erst dann überprüft werden, wenn ich auf den Start-Button geklickt habe und zeitgleich die Checkbox aktiviert ist.

    Wenn die Checkbox nicht aktiviert ist, soll eine MsgBox ausgegeben werden, mit dem entsprechendem Hinweis.
    Auch soll - allerdings nur wenn die Checkbox auch aktiviert ist - geschaut werden, ob die Textbox nicht leer ist. Wenn leer, dann soll auch hier eine MsgBox mit dem entsprechendem Hinweis ausgegeben werden.

    In der ganzen Form möchte ich nur einen Button haben, der einmal das Ganze starten, aber auch beenden kann.
    Wenn also die Aktion ausgewählt ist und die MsgBoxen angezeigt werden, soll der Start-Button zu einem Stop-Button werden, und den Timer, die Ausführung der Aktion beenden, sowie die Textbox leeren. Danach soll wieder ein Starten möglich sein.




    Es geht mir hauptsächlich darum, dass ich zwei Funktionen für einen Button bekomme. Ich hatte mir das so gedacht:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim Status_des_Buttons As Boolean = True
    3. If Status_des_Buttons = True Then
    4. 'Start wurde gedrückt
    5. MsgBox("gestartet!")
    6. Button1.Text = "Stop"
    7. Else
    8. Status_des_Buttons = False
    9. 'Stop wurde gedrückt
    10. MsgBox("gestoppt!")
    11. Button1.Text = "Start"
    12. End If
    13. End Sub

    ...aber es kommt immer nur die MsgBox "gestartet" - irgendwo ist wohl was falsch, ich hoffe auf eure Hilfe! ;)
    So sollte es gehen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Status_des_Buttons As Boolean = True
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. If Status_des_Buttons = True Then
    5. 'Start wurde gedrückt
    6. Status_des_Buttons = False
    7. MsgBox("gestartet!")
    8. Button1.Text = "Stop"
    9. Else
    10. 'Stop wurde gedrückt
    11. Status_des_Buttons = True
    12. MsgBox("gestoppt!")
    13. Button1.Text = "Start"
    14. End If
    15. End Sub

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ChillTime“ ()

    ChillTime schrieb:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Status_des_Buttons As Boolean = True If Status_des_Buttons = True Then 'Start wurde gedrückt Status_des_Buttons = False MsgBox("gestartet!") Button1.Text = "Stop" Else 'Stop wurde gedrückt Status_des_Buttons = True MsgBox("gestoppt!") Button1.Text = "Start" End If End Sub

    Danke für deine Antwort,
    doch damit bekomme ich auch immer nur "gestartet".
    Kein Wunder. LOL

    VB.NET-Quellcode

    1. Dim Status_des_Buttons As Boolean = True
    2. If Status_des_Buttons = True Then
    ==>

    VB.NET-Quellcode

    1. Dim Status_des_Buttons As Boolean = CheckBox1.Checked ' dies hier
    2. If Status_des_Buttons = True Then
    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!
    Anderer Vorschlag:
    Nutz den Button-Text als Steuerbefehl.

    VB.NET-Quellcode

    1. Private Sub Button1_Click ...
    2. If Button1.Text="Start" Then
    3. Button1.Text="Stop"
    4. 'start Timer
    5. Else
    6. Button1.Text="Start"
    7. 'stop Timer
    8. End If
    9. End Sub

    Evtl. musst du bei der Initialisierung der Klasse/des Programms den Text auf "Start" setzen
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Der Button hat eindeutig die Funktionalität einer Checkbox - nämlich einen Boolean jeweils umzuschalten.

    Das einfachste ist, auch einen Checkbox zu nehmen. Da braucht man dann nichtmal die Beschriftung zu ändern, sondern man schreibt "Ist aktiv" - und wenn die box halt nicht gecheckt ist, weiß jeder, dass das Teil nicht aktiv ist.
    Dann solltest Du diesen Thread beenden: Drücke auf den Erledigt-Button.
    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!