2011-01-09 3 views
2

Ich suche überall, aber konnte einfach kein gutes Beispiel oder Text zu diesem Thema finden.Was ist die richtige Methode zur Validierung von .NET Windows Forms?

Ich möchte zum Beispiel die Gültigkeit des Benutzernamens und des Passworts prüfen, wenn ein Benutzer in einem Dialog die OK-Taste drückt.

Sollte ich dies in der Abschlussveranstaltung tun, und den Dialog schließen schließen, wenn die Validierung fehlschlägt? Oder setzen Sie die DialogResult auf keine statt auf OK. All dies scheint irgendwie der falsche Weg zu sein. Ich sah auch die Validated und Validating Ereignisse aber sind das nicht nur für die Validierung eines einzigen Steuerelements für gültige Eingabe?

Wie kann ich mehr Kontrollen zusammen überprüfen, wenn die OK-Taste gedrückt wird, und das Schließen des Formulars abbrechen?

Antwort

3

Es hängt davon ab, was Sie versuchen zu tun. Wenn Sie überprüfen möchten, ob der Benutzer etwas eingegeben hat, bei dem es sich möglicherweise um einen gültigen Benutzernamen/ein gültiges Kennwort handelt, können Sie die Validierungsereignisse verwenden (z. B. sicherstellen, dass sie lang genug sind usw.). Wenn Sie überprüfen möchten, ob der Benutzername/das Passwort einem gültigen Konto entspricht, müssen Sie warten, bis sie die OK-Schaltfläche drücken und die Anmeldeinformationen überprüfen. Wenn sie schlecht sind, können Sie ein Meldungsfeld (oder was auch immer) aufwerfen und verhindern, dass der Dialog geschlossen wird (DialogResult.None).

+0

Eigentlich wollte ich das machen und 'DialogResult.None' hat auch funktioniert, war mir aber nicht sicher, ob das der richtige Weg war, da es nicht so aussieht für mich lesbar, dass ein 'none' Ergebniswert von etwas den Dialog tatsächlich löscht. Aber ich denke, es gibt keine anderen Möglichkeiten – sekmet64

+0

+1: Ich lese die Frage erneut und es geht um "Business-Validierung" nicht über "Eingabe-Validierung", so ist dies die richtige Antwort. –

+0

Aber Sie müssen Schließen aufrufen, wenn Ihre Validierung fehlschlägt? –

1

Jede Steuerung bietet Validating Ereignis. In diesem Fall können Sie die Validierung eines einzelnen Steuerelements implementieren. Standardmäßig wird diese Überprüfung ausgelöst, wenn das Steuerelement den Fokus verliert. Im Gegensatz zum Ereignis Validated empfängt der Handler dieses Ereignisses CancelEventArgs. Wenn die Validierung fehlschlägt, können Sie den aktuellen Vorgang abbrechen (Fokus verlieren). Wenn Sie komplexe Validierungen durchführen möchten, können Sie die AutoValidate Eigenschaft Ihres Formulars auf AutoValidate.Disable setzen. Dies deaktiviert die implizite Validierung (das zuvor beschriebene Standardverhalten). Stattdessen müssen Sie ValidateChildren aufrufen, um die explizite Überprüfung aller untergeordneten Steuerelemente auszulösen.

+0

+1 für Infos über AutoValidate & ValidateChildren –

Verwandte Themen