2009-11-18 10 views
7

Ich habe Winforms mit einigen Steuerelementen und einem ErrorProvider. Die Validierungsereignisse des Steuerelements werden verwendet, um die Daten zu überprüfen und den Fehler an den ErrorProvider zu melden, falls vorhanden. Dies funktioniert hervorragend, wenn der Benutzer falsche Informationen in das Steuerelement eingibt und die Steuerung verlässt.Wie erzwinge ein Steuerelement, um sich selbst zu validieren?

Die Validierung erfolgt jedoch nicht, wenn der Benutzer auf klickt, ohne Daten einzugeben. Gibt es eine Möglichkeit, die Überprüfung aller Steuerelemente zu erzwingen, wenn der Benutzer auf OK klickt? Und wenn eine Validierung fehlgeschlagen ist, wie kann ich das Ereignis OK erkennen und abbrechen?

Antwort

14

Sie können Form.ValidateChildren verwenden, um die Überprüfung aller Steuerelemente im Formular zu erzwingen, sofern sie die Validierung unterstützen. Beachten Sie, dass jedes Steuerelement, bei dem CausesValidation auf False gesetzt ist, kein Validating-Ereignis auslöst und daher nicht von ValidateChildren validiert wird.

+11

Was ist mit der Validierung einer einzelnen ComboBox? Form.ValidateChildren stellt ein Effizienzproblem dar, wenn es in Formularen mit einer großen Anzahl von Steuerelementen verwendet wird, die eine Überprüfung verursachen. – Rob

3

Sie können auch Validate oder ValidateChildren eines Vorfahren ContainerControl verwenden, wobei Validate am besten funktionieren sollte.

Beachten Sie, dass Form eine ContainerControl ist.

Verwandte Themen