2017-07-23 4 views
0

Also, basierend auf dem Titel, wann sollte ich Validierung auf einem CEdit (Textbox) tun?mfc CEdit wann soll ich Validierung durchführen?

Hintergrund: Ich wurde in einer neuen Entwicklergruppe auf unsere Firma übertragen, und ihre Praxis drückt Enter, das ist, wenn sie ihre Validierungen auf einem CEdit (MFC-Dialog) machen. Wohingegen ich, kam von .net, speziell von WinForms, wo gibt es die Validated und Validating Ereignisse, die jeder Entwickler sehen wird und erkennen, dass dies das richtige Ereignis ist, wo Sie Validierung durchführen sollten.

Meine Frage im Detail ist:

Soll ich folge ihrer Praxis (enter)? Oder was ich im Sinn habe, ist EN_KILLFOCUS (was ist nahe/in Bezug auf die oben genannten Ereignisse)? Oder beides ist falsch und gibt es ein Ereignis, das viel besser für die Validierung geeignet ist?

Ich brauche deine Vorschläge, denn wenn meine Mitentwickler gefragt werden, sagen sie alle sofort, dass ich die Validierung nach dem Drücken von Enter handhaben soll. Vielen Dank!

Antwort

1

Sogar in meiner Firma haben wir zwei Parteien.

Die erste Partei sagt strikt, dass Informationen nur bestätigt werden, wenn Enter gedrückt wird, also in dem Moment, wenn ALLE Informationen verfügbar sind. Vorteil, wenn Sie eine Reihe von Informationen haben, die sich gegenseitig beeinflussen diese Methode ist einfach. Der MFC DoDataExchange-Ansatz ist ihr Favorit.

2. Partei sagt: Informationen müssen so früh wie möglich validiert werden. Ich denke, dieser Ansatz ist in Ordnung, wenn jeder Wert nahezu unabhängig ist. In diesem Fall prüfen Sie alle Daten auf EN_CHANGE oder EN_KILLFOCUS und deaktivieren Sie die Schaltfläche OK, bis alle Daten gültig sind.

Negativ zur zweiten Methode ist, dass Sie dem Benutzer in dem Moment, in dem Daten eingegeben werden, mehr Informationen geben müssen, um ihn zur Korrektur der Daten zu führen. Die erste Methode kann das Problem in einer Fehlermeldung erklären.

Ich verwende beide Methoden in meinen Programmen. In den meisten Fällen verwenden wir die erste Methode, weil wir herausgefunden haben, dass eine umfassende Fehlermeldung mit detaillierten Informationen für die Benutzer einfacher zu pflegen und zu verstehen ist, als wenn sie einen Dialog sehen und nicht auf eine aktivierte Schaltfläche OK gelangen. ..

BTW: Ich hasse Dialoge, wo ich negative Zahlen eingeben kann, wo nur positive Zahlen erlaubt sind. Verwenden Sie immer die richtigen und besten Eingabefelder, um die beste Anleitung zu erhalten. Daher ist die MFC-Methode "Out of range" nach dem Drücken der Eingabetaste keine gute Lösung. Wenn Sie ein Minimum und ein Maximum haben, können Sie den Wert sogar direkt korrigieren, nachdem der Benutzer die Eingabe eingegeben hat.

Aber diese Antwort und die Frage neigt dazu, auf Meinung basieren.

+0

Vielen Dank und vielen Dank für das Beispielszenario! –

-1

1) MFC bietet eine Validierungsfunktion für viele Datentypen. Dies hängt vom Typ der Daten ab, die Sie in dieses Steuerelement eingeben möchten. Ist das möglich, diese Einrichtung zu nutzen?

Meiner Meinung nach ist EN_KILLFOCUS eine bessere Option, denn wie wird validiert, wenn der Benutzer nicht die Eingabetaste drückt und die Tabulatortaste drückt, um zum nächsten Steuerelement zu wechseln? Sie können dies immer noch mit Ihren Kollegen besprechen und feststellen, welches der bessere Ort für die Validierung ist.

+0

[WM_KILLFOCUS ist die falsche Zeit für die Feldvalidierung] (https://blogs.msdn.microsoft.com/oldnewthing/20040419-00/?p=39753). – IInspectable

+0

Ich erwähnte EN_KILLFOCUS und nicht WM_KILLFOCUS. EN_KILLFOCUS wird gesendet, wenn ein Bearbeitungssteuerelement den Tastaturfokus verliert. Ist es nicht richtig zu validieren, sobald die Bearbeitung abgeschlossen ist? – PrashanthBC

+0

Es wäre korrekt, wenn es tatsächlich gesendet würde * "sobald die Bearbeitung erfolgt" *. Der Link, den ich gepostet habe, erklärt, warum die Nachricht möglicherweise zu spät gesendet wird. Außerdem ist es immer noch der falsche Ansatz, die Eingaben zu validieren, sobald die Bearbeitung abgeschlossen ist, da dies die Verwendung der Schnittstelle möglicherweise erschwert. Gelegentlich wird ein Benutzer Daten eingeben, die * temporär * ungültig sind (z. B. eine Datumsauswahl, eingestellt auf Februar; jetzt möchte der Benutzer den 31. Januar eingeben; sobald er '31' eingibt, wird die Eingabe durch Eingabevalidierung verworfen.) weil - nun - Februar hat keine 31 Tage). – IInspectable

0

Was auch immer Sie tun, sollten Sie versuchen, die Unterbrechung des Arbeitsflusses für Ihre Benutzer zu minimieren. Gleichzeitig müssen Sie konsistent sein mit dem, was der Benutzer für das Validierungsverhalten erwartet.Lassen Sie nicht zu, dass Ihr Bias das Dialogverhalten so beeinflusst, dass es für den Benutzer zu Verwirrung oder zusätzlichen Zeitaufwand beim Arbeiten mit dem Dialog führt. Das Wichtigste, was Sie im Auge behalten sollten, ist, mit Ihrem Ansatz übereinzustimmen.

Verwandte Themen