Textbox für Uhrzeit einstellen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Skype.

    Textbox für Uhrzeit einstellen

    Hey Leute,

    ich habe zwei textboxen die speziell für Uhrzeiten eingerichtet sind, also HH:MM. Sekunden sind nicht mit drin. Das heisst es sind genau 5 Zeichen.
    Damit man aber nicht eine ungültige Uhrzeit eintragen kann, habe ich mir einen Code erstellt, einen Syntaxcheck, der prüft ob die Uhrzeit gültig ist.

    Hier der Code:

    VB.NET-Quellcode

    1. If Convert.ToInt16(Microsoft.VisualBasic.Left(textbox_Von.Text, 1)) >= 3 Then
    2. SyntaxVon = False
    3. Exit Sub
    4. End If
    5. If Convert.ToInt16(Microsoft.VisualBasic.Left(textbox_Von.Text, 1)) = 2 Then
    6. If Convert.ToInt16(Microsoft.VisualBasic.Left(textbox_Von.Text, 2)) >= 4 Then '(<--- Hier springt der Debugger...
    7. SyntaxVon = False '(<--- Hier Hin, statt weiter; Warum? Die zweite Stelle nach der zwei ist unter 4, also kann das doch garnicht sein, oder?)
    8. Exit Sub
    9. End If
    10. End If
    11. If Not (Microsoft.VisualBasic.Left(textbox_Von.Text, 3)) = ":" Then
    12. SyntaxVon = False
    13. Exit Sub
    14. End If
    15. If Convert.ToInt16(Microsoft.VisualBasic.Left(textbox_Von.Text, 4)) >= 6 Then
    16. SyntaxVon = False
    17. Exit Sub
    18. End If
    19. If Convert.ToInt16(Microsoft.VisualBasic.Left(textbox_Von.Text, 4)) = 5 Then
    20. If Convert.ToInt16(Microsoft.VisualBasic.Left(textbox_Von.Text, 5)) > 9 Then
    21. SyntaxVon = False
    22. Exit Sub
    23. End If
    24. End If
    25. If textbox_Bis.Text = "" Then
    26. SyntaxVon = False
    27. Exit Sub
    28. End If
    29. SyntaxVon = True '(<--- Falls alles fehlerfrei durchgelaufen ist; Syntax Richtig!)


    Danke für eure Hilfe... =)

    Mfg

    Skype

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

    Skype schrieb:

    Danke für eure Hilfe... =)

    Wo ist die Frage?

    anyway ...

    OHNE sich die Füße zu brechen, ist es ein Einzeiler ...

    VB.NET-Quellcode

    1. Dim s As String = "12:33"
    2. Dim t As TimeSpan
    3. If TimeSpan.TryParse(s, t) Then
    4. MessageBox.Show("Its a time" & vbCrLf & t.ToString)
    5. Else
    6. MessageBox.Show("Its garbled!")
    7. End If
    Die Frage ist im Code drin...

    Gut, wusste nicht das es auch so einfach klappt, danke.
    Ich probiers sofort aus.

    EDIT: Es funktioniert ABER... Damit ist ja mein problem nicht gelöst... man kann trotzdem sachen eingeben das nichts mit ner uhrzeit zu tun hat...

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

    Vollzitat eines Vorposts an dieser Stelle entfernt ~VaporiZed

    Richtig so.

    Falls du die Uhrzeit noch relativ haben willst müsste das auch so lösebar sein:

    VB.NET-Quellcode

    1. If Timelabel1.Text = Time1.text Then
    2. MessageBox.Show("Its a time" & vbCrLf & Time1.Text)
    3. Else
    4. MessageBox.Show("Its garbled!")
    5. End If


    Für Timelabel1.Text brauchst du dann den Timer mit HH:MM und Time1 ist ein absoluter String der z.B. vom User geändert werden könnte.

    Jetzt kannst du es als Timer benutzen.

    Gruß,
    CM

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

    Hey ^^',

    danke für eure antworten aber bitte lest doch mal die frage RICHTIG durch :D

    Ich will (DESWEGEN AUCH MEIN LANGER CODE) das man nur eine RICHTIGE UHRZEIT eingeben kann!!^^

    Mit eurer Lösung kann man aber immernoch z.B. 36:37 eingeben :o

    Ausserdem war die Frage, warum der Debugger nicht weiter springt ^^ trotzdem danke bisher für eure anstrengungen.^^

    :) Mfg

    Skype
    Probier es mal mit einer MaskedTextBox und gib die Maske richtig vor.
    Alternativ kannst Du im KeyDown-Event nur Ziffern und den Doppelpunkt passieren lassen.
    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 Manschula^^
    Das Problem ist, das ich für mein Projekt keine Masked Textboxen verwenden will ^^

    :D Ich will ja nur das mir vielleicht wer helfen kann, der mir sagt was ich falsch mache ^^ Stimmt das Left nicht? Oder was ist den an meinem Code falsch das er nicht funktioniert?

    Weiterhin danke an alle^^

    Skype
    Und da hab ich gesagt "Das hab ich ja alles schon gemacht :'D"

    Hier der Beweis und sooo... :D

    VB.NET-Quellcode

    1. Select Case Asc(e.KeyChar)
    2. Case 48 To 57, 8
    3. Case Else
    4. e.Handled = True
    5. End Select


    Aber die Frage ist doch nur, was ich in meinem Code falsche mache ;(
    Ich will doch nur auf gültige Uhrzeiten prüfen xD
    Zum Beispiel könntest Du prüfen,
    ob nach 2 Zeichen ein Dopperpunkt kommt,
    ob nur 1 Doppelpunkt drin ist,
    ...
    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!
    Neben der KeyCode-Property im KeyDown-Event hast Du doch stets vollen Zugriff auf die Text-Property Deiner Textbox. :D
    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,

    doch, diesen Code sieht jeder... aber imho lohnt ein herumdoktern daran nicht. Wenn du erst eine nachträgliche Überprüfung willst, dann splitte am Doppelpunkt und prüfe, ob Teil1 =< 23 und ob Teil2 =< 59. Falls einer dieser drei Bedingungen nicht erfüllt ist, handelt es sich um kein von dir definiertes Format. Zum Beispiel...

    Gruß, Manschula

    Skype schrieb:

    Ich find das grad so lustig xD

    @Manschula's Vorschlag ist natürlich elegant,
    aber ich war mal fleißig und hab Deinen Code ein wenig geradegezogen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Function CheckTime(ByVal txt As String) As Boolean
    2. If txt.Length < 5 Then
    3. Return False
    4. End If
    5. If txt(0) >= "3" Then
    6. Return False
    7. End If
    8. If txt(0) = "2" AndAlso txt(1) >= "4" Then
    9. Return False
    10. End If
    11. If txt(2) <> ":" Then
    12. Return False
    13. End If
    14. If txt(3) >= "6" Then
    15. Return False
    16. End If
    17. Return True
    18. End Function
    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 danke leute ^___^ das ist was ich wollte :D
    Danke Rod, warst echt fleißig ;D haha. =) super^^
    Auch dir danke Manschula, für den Vorschlag. Hast Recht, diese Methode ist natürlich besser als meine. ^^

    danke für euer bemühen, war echt genial von euch :D

    mfg

    skype