von Punkten und Komma bei einer Textbox

  • VB.NET

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

    von Punkten und Komma bei einer Textbox

    Moin!

    wenn man in eine Textbox eingaben macht kann man bestimmte Tasten nicht zulassen.

    Ich möchte aber, ohne irgendwelche Cuture-Einstellungen zu ändern, beim Drücken des Komma einen Punkt einfügen.

    Also irgendwie eine andere Taste simulieren.

    Es geht im Grunde um eine Datumserfassung und ich könnte am Schluss Suchen und Ersetzen machen - aber das könnte den Anwender verwirren.

    Geht es dennoch auf dem Weg, den ich mir vorgestellt habe?

    Gruß Jan
    @jan99 Mach das mal im TextChange-Event der TextBox.
    Sinnvoll ist das jedenfalls nicht, ich kenne keine Länderspezifik, wo im Datum ein Komma vorkommt.
    Wie wäre es mit nem DateTimePicker?
    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!

    jan99 schrieb:

    aber das könnte den Anwender verwirren
    Ist dem so? Ich gebe dem User einfach einen Text an die Hand, will heißen ein Label mit Erklärung: Verfalldatum (Format TT.MM.JJJJ oder MM/JJ). Wenn er 04/24 eingibt, wird beim Verlassen der Box automatisch 30.04.2024 draus (ist betriebsintern so korrekt). Wenn der User was eingibt, was dem vorgegebenen Format nicht entspricht, meckert das Programm. Ich seh da weniger ein Problem als wenn ein Programm bestimmte Zeichen nicht erlaubt. Da würden meine User eher sagen: »Das Programm funktioniert nicht, da werden Eingaben verschluckt.« Oder noch besser: »Die Tastatur ist kaputt, wir brauchen eine neue.«
    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.

    jan99 schrieb:

    Es geht im Grunde um eine Datumserfassung und ich könnte am Schluss Suchen und Ersetzen machen - aber das könnte den Anwender verwirren.
    Ist der User nicht schon verwirrt, wenn der Datümmer mit Komma tippt? :D
    Und wenn die Komma-Taste Punkte schreibt, das kann doch auch nicht für Klarheit sorgen.
    @Haudruferzappeltnoch Der Ziffernblock der Tastatur generiert den länderspezifischen Dezimalseparator.
    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!
    Gibt doch auch diese maskierte Textbox oder? An sich aber würde ich den DateTimePicker bevorzugen bei Datumseingaben, da muss ich dann nichts validieren.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Also ich mache das in meinen Programmen für unser Büro so, dass ich das Komma als Datums-Separator zulasse und automatisch beim Verlassen der Textbox die Eingaben in ein Datum umwandle.

    Beispiel:
    Eingaben =
    41,24 => I/2024
    1,24 = 01/2024
    21,3,24 => 21.03.2024

    Hintergrund ist der, dass ich so alles über den Ziffernblock erledigen kann (als Steuerberater die Haupttasten). Natürlich ist das "/" auch erlaubt. ;)

    Bisher hat sich noch keiner darüber beschwert und ich finde es einfach easy. 8o
    Moin moin

    Also ich habe mich schon oft gewundert und geärgert über das "Problem" mit den unterschiedlichen Dezimaltrennern.

    Wenn ich es dem User "leicht" machen möchte, was seine Eingaben betrifft, dann sehe ich so etwas:

    VB.NET-Quellcode

    1. Private Sub TextBox_KeyPress(sender As Object, e As KeyPressEventArgs)
    2. If e.KeyChar = "." Then
    3. e.KeyChar = CChar(",")
    4. End If
    5. End Sub

    Als irgendwie eleganter als evtl, ständig eine MsgBox bzgl einer Fehleigabe aufpoppen zu lassen. Gerade wenn z.B. viele Eingaben schnell gemacht werden müssen, finde ich so etwas besser.
    Kann man ja auch mit einem Label erklären :D

    Den DateTimePicker finde ich oft sehr umständlich wenn ich mal schnell ein simples Datum eingeben muss und die MaskTexbox geht nun mal nicht immer, z.B. in einem DataGidView.
    Es gibt bestimmt für alles eine bessere elegantere Lösung :)
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    @Amelie: Vereinfache ruhig in Deinen Programmen: e.KeyChar = CChar(",") -> e.KeyChar = ","c
    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.