Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Benutzer Daten in Ihre Anwendung eingeben, können Sie überprüfen, ob die Daten gültig sind, bevor Ihre Anwendung sie verwendet. Möglicherweise müssen bestimmte Textfelder nicht null lang sein, dass ein Feld, das als Telefonnummer formatiert ist, oder dass eine Zeichenfolge keine ungültigen Zeichen enthält. Windows Forms bietet verschiedene Möglichkeiten zum Überprüfen von Eingaben in Ihrer Anwendung.
MaskedTextBox-Steuerelement
Wenn Sie festlegen müssen, dass Benutzer Daten in ein klar definiertes Format eingeben, z. B. eine Telefonnummer oder eine Teilnummer, können Sie dies schnell und mit minimalem Code mithilfe des MaskedTextBox-Steuerelements erreichen. Eine Maske ist eine Zeichenfolge, die aus Zeichen einer Maskierungssprache besteht, mit der festgelegt wird, welche Zeichen an einer bestimmten Position in einem Textfeld eingegeben werden können. Das Steuerelement zeigt dem Benutzer eine Reihe von Eingabeaufforderungen an. Wenn der Benutzer einen falschen Eintrag macht, zum Beispiel einen Buchstaben eingibt, obwohl eine Ziffer erforderlich ist, verweigert das Steuerelement die Eingabe automatisch.
Die von ihnen verwendete MaskedTextBox Maskierungssprache ist flexibel. Damit können Sie erforderliche Zeichen, optionale Zeichen, Literalzeichen wie Bindestriche und Klammern, Währungszeichen und Datumstrennzeichen angeben. Das Steuerelement funktioniert auch gut, wenn es an eine Datenquelle gebunden ist. Das Format-Ereignis in einer Datenbindung kann verwendet werden, um eingehende Daten entsprechend der Maske neu zu formatieren, während das Parse-Ereignis verwendet werden kann, um ausgehende Daten entsprechend den Spezifikationen des Datenfelds neu zu formatieren.
Ereignisgesteuerte Überprüfung
Wenn Sie die vollständige programmgesteuerte Kontrolle über die Überprüfung benötigen oder komplexe Überprüfungen benötigen, sollten Sie die Überprüfungsereignisse verwenden, die in die meisten Windows Forms-Steuerelemente integriert sind. Jedes Steuerelement, das Freiformbenutzereingaben akzeptiert, verfügt über ein Validating Ereignis, das ausgelöst wird, wenn das Steuerelement eine Datenüberprüfung erfordert. Validating Im Ereignishandlercode können Sie benutzereingaben auf verschiedene Weise überprüfen. Wenn Sie z. B. über ein Textfeld verfügen, das eine Postleitzahl enthalten muss, können Sie die Überprüfung auf folgende Weise ausführen:
Wenn die Postleitzahl zu einer bestimmten Gruppe von Postleitzahlen gehören muss, können Sie einen Zeichenfolgenvergleich für die Eingabe durchführen, um die vom Benutzer eingegebenen Daten zu überprüfen. Wenn sich die Postleitzahl beispielsweise im Satz
{10001, 10002, 10003}
befindet, können Sie einen Zeichenfolgenvergleich verwenden, um die Daten zu überprüfen.Wenn sich die Postleitzahl in einer bestimmten Form befindet, können Sie reguläre Ausdrücke verwenden, um die vom Benutzer eingegebenen Daten zu überprüfen. Um beispielsweise das Formular
#####
oder#####-####
zu überprüfen, können Sie den regulären Ausdruck^(\d{5})(-\d{4})?$
verwenden. Um das FormularA#A #A#
zu überprüfen, können Sie den regulären Ausdruck[A-Z]\d[A-Z] \d[A-Z]\d
verwenden. Weitere Informationen zu regulären Ausdrücken finden Sie unter .NET Regular Expressions and Regular Expression Examples.Wenn es sich bei der Postleitzahl um eine gültige Postleitzahl in den USA handeln muss, können Sie zum Überprüfen der von den Benutzenden eingegebenen Daten einen Webdienst für Postleitzahlen aufrufen.
Das Validating-Ereignis wird als Objekt vom Typ CancelEventArgs bereitgestellt. Wenn Sie feststellen, dass die Daten des Steuerelements ungültig sind, brechen Sie das Validating Ereignis ab, indem Sie die Eigenschaft dieses Objekts Cancel auf true
festlegen. Wenn Sie die Eigenschaft nicht festlegen, geht Windows Forms davon aus, dass die Cancel Überprüfung für dieses Steuerelement erfolgreich war und das Validated Ereignis auslöst.
Ein Codebeispiel, das eine E-Mail-Adresse in einer TextBoxE-Mail überprüft, finden Sie in der Validating Ereignisreferenz.
Ereignisgesteuerte, datengebundene Validierungskontrollen
Die Überprüfung ist nützlich, wenn Sie Ihre Steuerelemente an eine Datenquelle gebunden haben, z. B. eine Datenbanktabelle. Mithilfe der Überprüfung können Sie sicherstellen, dass die Daten Ihres Steuerelements dem für die Datenquelle erforderlichen Format entsprechen und dass es keine Sonderzeichen wie Anführungszeichen und Schrägstriche enthält, die möglicherweise unsicher sind.
Wenn Sie die Datenbindung verwenden, werden die Daten in Ihrer Steuerung während der Ausführung des Validating-Ereignisses mit der Datenquelle synchronisiert. Wenn Sie das Validating Ereignis abbrechen, werden die Daten nicht mit der Datenquelle synchronisiert.
Von Bedeutung
Wenn Sie eine benutzerdefinierte Überprüfung haben, die nach dem Validating Ereignis stattfindet, wirkt sich dies nicht auf die Datenbindung aus. Wenn beispielsweise Code in einem Validated-Ereignis versucht, die Datenbindung zu abzubrechen, besteht die Datenbindung weiterhin. In diesem Fall, um die Validierung im Validated-Ereignis auszuführen, ändern Sie die Binding.DataSourceUpdateMode
-Eigenschaft des Steuerelements von DataSourceUpdateMode.OnValidation auf DataSourceUpdateMode.Never, und fügen Sie your-control.DataBindings["field-name"].WriteValue()
zu Ihrem Überprüfungscode hinzu.
Implizite und explizite Überprüfung
Wann werden die Daten eines Steuerelements überprüft? Dies liegt an Ihnen, dem Entwickler. Je nach den Anforderungen Ihrer Anwendung können Sie entweder implizite oder explizite Validierung verwenden.
Implizite Überprüfung
Der implizite Überprüfungsansatz überprüft Daten, wenn der Benutzer sie eingibt. Überprüfen Sie die Daten, indem Sie die Tasten lesen, während sie gedrückt werden, oder häufiger, wenn der Benutzer den Eingabefokus vom Steuerelement wegnimmt. Dieser Ansatz ist nützlich, wenn Sie dem Benutzer sofortiges Feedback zu den Daten geben möchten, während er arbeitet.
Wenn Sie die implizite Überprüfung für ein Steuerelement verwenden möchten, müssen Sie die AutoValidate Eigenschaft dieses Steuerelements auf EnablePreventFocusChange oder EnableAllowFocusChangefestlegen. Wenn Sie das Validating Ereignis abbrechen, wird das Verhalten des Steuerelements durch den Wert bestimmt, dem Sie zugewiesen haben AutoValidate. Wenn Sie das Ereignis zugewiesen haben EnablePreventFocusChange, wird durch das Abbrechen des Ereignisses verhindert, dass das Validated Ereignis auftritt. Der Eingabefokus bleibt auf dem aktuellen Steuerelement, bis der Benutzer die Daten in ein gültiges Format ändert. Wenn Sie EnableAllowFocusChange zugewiesen haben, tritt das Validated-Ereignis nicht auf, wenn Sie das Ereignis abbrechen, ändert sich der Fokus trotzdem zum nächsten Steuerelement.
Wenn der Disable-Eigenschaft AutoValidate zugewiesen wird, wird die implizite Überprüfung insgesamt verhindert. Verwenden Sie die explizite Überprüfung, um Ihre Steuerelemente zu überprüfen.
Explizite Überprüfung
Der explizite Validierungsansatz überprüft Daten gleichzeitig. Sie können die Daten als Reaktion auf eine Benutzeraktion überprüfen, z. B. auf eine Schaltfläche " Speichern " oder einen Link "Weiter ". Wenn die Benutzeraktion auftritt, können Sie die explizite Überprüfung auf eine der folgenden Arten auslösen:
- Rufen Sie Validate auf, um das letzte Steuerelement zu validieren, das den Fokus verloren hat.
- Aufruf von ValidateChildren, um alle untergeordneten Steuerelemente in einem Formular oder Containersteuerelement zu überprüfen
- Rufen Sie eine benutzerdefinierte Methode auf, um die Daten in den Steuerelementen manuell zu überprüfen.
Standardmäßiges implizites Überprüfungsverhalten für Steuerelemente
Für die jeweilige AutoValidate-Eigenschaft der verschiedenen Windows Forms-Steuerelemente gelten unterschiedliche Standardwerte. In der folgenden Tabelle sind die am häufigsten verwendeten Steuerelemente und deren Standardwerte aufgeführt.
Steuerung | Standardüberprüfungsverhalten |
---|---|
ContainerControl | Inherit |
Form | EnableAllowFocusChange |
PropertyGrid | Eigenschaft in Visual Studio nicht verfügbar |
ToolStripContainer | Eigenschaft in Visual Studio nicht verfügbar |
SplitContainer | Inherit |
UserControl | EnableAllowFocusChange |
Schließen des Formulars und überschreiben der Überprüfung
Wenn ein Steuerelement den Fokus behält, da die darin enthaltenen Daten ungültig sind, ist es unmöglich, das übergeordnete Formular auf eine der üblichen Arten zu schließen:
- Durch Klicken auf die Schaltfläche Schließen
- Wählen Sie das Menü "System>Schließen" aus.
- Durch programmgesteuertes Aufrufen der Close-Methode
In einigen Fällen möchten Sie es dem Benutzer jedoch möglicherweise ermöglichen, das Formular zu schließen, unabhängig davon, ob die Werte in den Steuerelementen gültig sind. Sie können die Überprüfung außer Kraft setzen und ein Formular schließen, das weiterhin ungültige Daten enthält, indem Sie einen Handler für das FormClosing-Ereignis des Formulars erstellen. Legen Sie in diesem Fall die Cancel-Eigenschaft auf false
fest. Dadurch wird das Schließen des Formulars erzwungen. Weitere Informationen und ein Beispiel finden Sie unter Form.FormClosing.
Hinweis
Wenn Sie erzwingen, dass das Formular auf diese Weise geschlossen wird, gehen nicht gespeicherte Daten verloren. Darüber hinaus überprüfen modale Formulare den Inhalt von Steuerelementen nicht, wenn sie geschlossen werden. Sie können die Steuerelementüberprüfung weiterhin verwenden, um den Fokus auf ein Steuerelement zu sperren, aber Sie müssen sich keine Gedanken über das Verhalten machen, das dem Schließen des Formulars zugeordnet ist.
Siehe auch
.NET Desktop feedback