Eingabe Validierung abhängig von nächstem Control

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von HalliHallo.

    Eingabe Validierung abhängig von nächstem Control

    Hallo,

    ich stehe vor folgendem Problem:

    In einem Formular soll eine Eingabe validiert werden. Aber nur wenn der User „vorwärts“ die Textbox verlässt. Also z.B. mit Tab zur nächsten Textbox will.

    Versucht er aber die Textbox rückwärts zu verlassen (z.B. mit Shift+Tab oder der Maus) zu einer vorherigen Textbox, dann soll nicht validiert werden.

    Mit „CausesValidation =False“ kann ich nicht arbeiten da andere Textboxen event. validiert werden sollen.

    Beispiel-Formular:
    Box1
    Box2
    Box3
    Box4
    Box5
    Box6

    Diese werden bei der Eingabe in der Reihenfolge der Zahlen durchlaufen .

    Wenn der User von Box1 zu Box2 wechselt dann soll Box1 validiert werden.

    Wenn er von Box4 zu Box5 wechselt dann soll Box4 validiert werden.

    Wenn er aber von Box4 zurück zu Box2 oder zu Box1 wechselt, dann soll Box4 nicht validiert werden.

    Ich habe versucht einfach im Leave- oder LostFocus-Ereigniss selbst die Eingabe zu überprüfen. Dazu brauche ich aber eine Möglichkeit herauszufinden, welches Control als nächstes den Focus bekommt.

    Gibt es diese Möglichkeit? Oder geht es anders?
    Habe schon alles „durchgegoogelt“ und finde nix.
    Schon mal vorab vielen Dank für eure Mühe und viele Grüße

    Gregor
    man kann auch ContainerControls validieren.
    So könnte man die beiden Boxen auf ein Panel legen, und das Panel validieren, wenn es verlassen wird.
    Der User kann dann in den boxen herumdaddeln wie wolle - erst wenn er aus dem Panel rausgeht wird validiert.

    Ist nicht ganz was du als Anforderung beschreibst, aber vlt. auch eine Option für dich.
    Du könntest den TabIndex der Controls passend setzen und prüfen. Box1 hat TabIndex x, Box3 x + 1, Box3 x + 2, …
    Aber was ist das für ein benutzerunfreundliches Formular, bei dem die Reihenfolge der Eingabe relevant ist? Dann lieber einen TabControl ohne Reiter, bei dem man nach Validierung erst zur nächsten TabPage bzw. zum nächsten Eingabecontrol kommt.
    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.
    Hallo VaporiZed,
    ich finde das nicht so benutzerunfreundlich. Bei mir ist die Sache sehr fachbezogen. Könnte ich hier sehr schlecht erklären.
    Nehmen wir aber mal als Beispiel es sollte einfach das Produkt aus Textbox4 und Textbox5 errechnet werden. Verlässt der User die Textbox5 in Richtung Textbox6 dann wird validiert ob in 4 und 5 eine Zahl steht.
    Verlässt er aber die Textbox5 wieder zurück in zu Textbox4 umd diese event. noch zu ändern, dann wird nix validiert. Und wenn er zu den Boxen 1,2 oder 3 wechselt um irgendwas zu machen, dann wird auch nicht validiert.
    So soll das gehen. Denn erst, wenn er von 5 zu 6 wechseln will soll die validierung stattfinden.
    Für mich ist das nicht benutzerunfreundlich. Eher das Gegenteil. Ich kann nämlich in den vorhergehenden Textboxen immer noch etwas ändern ohne das ich bei verlassen der Textbox 5 mit einem Fehlerhinweis genervt werde.
    Trotzdem Danke für die Mühe und schönen Abend noch.