Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer gebruikers gegevens invoeren in uw toepassing, kunt u controleren of de gegevens geldig zijn voordat uw toepassing deze gebruikt. Mogelijk moet u vereisen dat bepaalde tekstvelden niet de lengte nul hebben, dat een veld dat is opgemaakt als een telefoonnummer of dat een tekenreeks geen ongeldige tekens bevat. Windows Forms biedt verschillende manieren om invoer in uw toepassing te valideren.
MaskedTextBox-controle
Als u wilt dat gebruikers gegevens invoeren in een goed gedefinieerde indeling, zoals een telefoonnummer of een onderdeelnummer, kunt u dit snel en met minimale code doen met behulp van het MaskedTextBox besturingselement. Een masker is een tekenreeks die bestaat uit tekens uit een maskertaal die aangeeft welke tekens op een willekeurige positie in het tekstvak kunnen worden ingevoerd. Het besturingselement geeft een reeks prompts weer voor de gebruiker. Als de gebruiker een onjuiste invoer geeft, bijvoorbeeld een letter typt wanneer een cijfer is vereist, wordt de invoer automatisch geweigerd.
De maskeringstaal die wordt gebruikt door MaskedTextBox is flexibel. Hiermee kunt u vereiste tekens, optionele tekens, letterlijke tekens, zoals afbreekstreepjes en haakjes, valutatekens en datumscheidingstekens opgeven. Het besturingselement werkt ook goed wanneer het is gebonden aan een gegevensbron. De Format gebeurtenis op een gegevensbinding kan worden gebruikt om binnenkomende gegevens opnieuw in te delen om te voldoen aan het masker en de Parse gebeurtenis kan worden gebruikt om uitgaande gegevens opnieuw op te maken om te voldoen aan de specificaties van het gegevensveld.
Gebeurtenisgestuurde validatie
Als u volledige programmatische controle over validatie wilt of complexe validatiecontroles nodig hebt, moet u de validatiegebeurtenissen gebruiken die zijn ingebouwd in de meeste Besturingselementen van Windows Forms. Elk besturingselement dat vrije gebruikersinvoer accepteert, heeft een Validating gebeurtenis die wordt gegenereerd wanneer voor het besturingselement gegevensvalidatie is vereist. In de Validating gebeurtenishandlercode kunt u gebruikersinvoer op verschillende manieren valideren. Als u bijvoorbeeld een tekstvak hebt dat een postcode moet bevatten, kunt u de validatie op de volgende manieren uitvoeren:
Als de postcode moet behoren tot een specifieke groep postcodes, kunt u een tekenreeksvergelijking uitvoeren op de invoer om de gegevens te valideren die door de gebruiker zijn ingevoerd. Als de postcode bijvoorbeeld in de set
{10001, 10002, 10003}moet staan, kunt u een tekenreeksvergelijking gebruiken om de gegevens te valideren.Als de postcode in een specifiek formulier moet staan, kunt u reguliere expressies gebruiken om de gegevens te valideren die door de gebruiker zijn ingevoerd. Als u bijvoorbeeld het formulier
#####wilt valideren of#####-####, kunt u de reguliere expressie^(\d{5})(-\d{4})?$gebruiken. Als u het formulierA#A #A#wilt valideren, kunt u de reguliere expressie[A-Z]\d[A-Z] \d[A-Z]\dgebruiken. Zie .NET Regular Expressions en Regular Expression Examples voor meer informatie over reguliere expressies.Als de postcode een geldige postcode in de Verenigde Staten moet zijn, kunt u een webservice voor postcodes aanroepen om de gegevens te valideren die door de gebruiker zijn ingevoerd.
De Validating-gebeurtenis krijgt een object van het type CancelEventArgs opgegeven. Als u bepaalt dat de gegevens van het besturingselement ongeldig zijn, annuleert u de gebeurtenis door de Validating eigenschap van Cancel dit object in te stellen op true. Als u de Cancel eigenschap niet instelt, gaat Windows Forms ervan uit dat de validatie voor dat controle is geslaagd en wordt het Validated event gegenereerd.
Zie de TextBox gebeurtenisreferentie voor een codevoorbeeld waarmee een e-mailadres in een Validatingwordt gevalideerd.
Gebeurtenisgestuurde, aan gegevens gebonden besturingselementen voor validatie
Validatie is handig wanneer u uw besturingselementen hebt gebonden aan een gegevensbron, zoals een databasetabel. Door validatie te gebruiken, kunt u ervoor zorgen dat de gegevens van uw besturingselement voldoen aan de indeling die is vereist voor de gegevensbron en dat deze geen speciale tekens zoals aanhalingstekens en back-slashes bevat die mogelijk onveilig zijn.
Wanneer u gegevensbinding gebruikt, worden de gegevens in uw besturingselement gesynchroniseerd met de gegevensbron tijdens de uitvoering van de Validating gebeurtenis. Als u de Validating gebeurtenis annuleert, worden de gegevens niet gesynchroniseerd met de gegevensbron.
Belangrijk
Als u een aangepaste validatie hebt die na de Validating gebeurtenis plaatsvindt, heeft dit geen invloed op de gegevensbinding. Als u bijvoorbeeld code hebt in een Validated gebeurtenis die probeert de gegevensbinding te annuleren, vindt de gegevensbinding nog steeds plaats. Als u in dit geval validatie wilt uitvoeren in de Validated gebeurtenis, wijzigt u de Binding.DataSourceUpdateMode eigenschap van het besturingselement van DataSourceUpdateMode.OnValidation naar DataSourceUpdateMode.Never en voegt u your-control.DataBindings["field-name"].WriteValue() toe aan uw validatiecode.
Impliciete en expliciete validatie
Dus wanneer worden de gegevens van een besturingselement gevalideerd? Dit is aan u, de ontwikkelaar. U kunt impliciete of expliciete validatie gebruiken, afhankelijk van de behoeften van uw toepassing.
Impliciete validatie
De impliciete validatiebenadering valideert gegevens terwijl de gebruiker deze invoert. Valideer de gegevens door de sleutels te lezen terwijl ze worden ingedrukt of vaker wanneer de gebruiker de invoerfocus van het besturingselement afneemt. Deze aanpak is handig als u de gebruiker direct feedback wilt geven over de gegevens terwijl ze werken.
Als u impliciete validatie voor een besturingselement wilt gebruiken, moet u de eigenschap AutoValidate van EnablePreventFocusChange dat besturingselement instellen op of EnableAllowFocusChange. Als u de Validating gebeurtenis annuleert, wordt het gedrag van het besturingselement bepaald door de waarde die u hebt AutoValidatetoegewezen. Als u de gebeurtenis hebt toegewezen EnablePreventFocusChange, voorkomt u dat de Validated gebeurtenis wordt geannuleerd. De invoerfocus blijft op het huidige bedieningselement staan totdat de gebruiker de gegevens in een geldige indeling wijzigt. Als u EnableAllowFocusChange hebt toegewezen, wordt de Validated gebeurtenis niet uitgevoerd wanneer u de gebeurtenis annuleert, maar de focus gaat nog steeds naar het volgende besturingselement.
Als u Disable aan de AutoValidate eigenschap toewijst, voorkomt u impliciete validatie helemaal. Gebruik expliciete validatie om uw besturingselementen te valideren.
Expliciete validatie
De expliciete validatiebenadering valideert gegevens tegelijk. U kunt de gegevens valideren als reactie op een gebruikersactie, zoals klikken op een knop Opslaan of een koppeling Volgende . Wanneer de gebruikersactie plaatsvindt, kunt u op een van de volgende manieren expliciete validatie activeren:
- Bel Validate om het laatste element te valideren dat de focus heeft verloren.
- Aanroep ValidateChildren om alle onderliggende besturingselementen in een formulier- of containerbesturingselement te valideren.
- Roep een aangepaste methode aan om de gegevens in de besturingselementen handmatig te valideren.
Standaardgedrag voor impliciete validatie voor besturingselementen
Verschillende Besturingselementen voor Windows Forms hebben verschillende standaardwaarden voor hun AutoValidate eigenschap. In de volgende tabel ziet u de meest voorkomende besturingselementen en de standaardinstellingen.
| Beheersing | Standaardvalidatiegedrag |
|---|---|
| ContainerControl | Inherit |
| Form | EnableAllowFocusChange |
| PropertyGrid | Eigenschap niet weergegeven in Visual Studio |
| ToolStripContainer | Eigenschap niet weergegeven in Visual Studio |
| SplitContainer | Inherit |
| UserControl | EnableAllowFocusChange |
Het formulier sluiten en validatie overschrijven
Wanneer een besturingselement de focus behoudt omdat de gegevens die het bevat ongeldig is, is het onmogelijk om het bovenliggende formulier op een van de gebruikelijke manieren te sluiten:
- Klik op de knop Sluiten .
- Door het menu Systeem>sluiten te selecteren.
- Door de Close methode programmatisch aan te roepen.
In sommige gevallen wilt u de gebruiker echter het formulier laten sluiten, ongeacht of de waarden in de besturingselementen geldig zijn. U kunt validatie overschrijven en een formulier sluiten dat nog steeds ongeldige gegevens bevat door een handler te maken voor de gebeurtenis van FormClosing het formulier. Stel in het geval de Cancel eigenschap in op false. Dit dwingt het formulier te sluiten. Zie voor meer informatie en een voorbeeld Form.FormClosing.
Opmerking
Als u afdwingen dat het formulier op deze manier wordt gesloten, gaan niet-opgeslagen gegevens verloren. Modale formulieren valideren de inhoud van besturingselementen niet wanneer ze worden gesloten. U kunt besturingsvalidatie nog steeds gebruiken om de focus naar een besturingselement te vergrendelen, maar u hoeft zich geen zorgen te maken over het gedrag dat is gekoppeld aan het sluiten van het formulier.
Zie ook
.NET Desktop feedback