Oikeellisuustarkistukset - Luento 6
Käydään läpi miten tehdään tekstikenttien syötteiden oikeellisuustarkistukset ja ilmoitetaan käyttäjälle virheistä.
- Oikeellisuustarkistukset (Youtube)
- tjlahton2012-02-08_1711.mp4 15.8 Mt
- tjlahton2012-02-08_1711.wmv 22.6 Mt
- tjlahton2012-02-08_1711.mp3 8.0 Mt
Validating_Label-esimerkki (Validating_Label.zip)
Oikeellisuustarkistuksien toimintaan vaikuttaa lomakkeen AutoValidate-ominaisuus:
- AutoValidate = AutoValidate.EnablePreventFocusChange Tämä on oletusarvo. Kenttä, jonka arvo on epävalidi, ei päästä poistumaan kentästä ennen kuin arvo on validi
- AutoValidate = AutoValidate.Disable Tarkistuksia ei suoriteta kuin erikseen pyydettäessä:
if (this.ValidateChildren()) { // kaikki ok } else { // jossain kentässä on vikaa }
- AutoValidate = AutoValidate.EnableAllowFocusChange Kenttien syötteet tarkistetaan heti yritettäessä poistua kentästä. Poistuminen sallitaan vaikka syöte olisikin virheellinen
- AutoValidate = AutoValidate.Inherit Peritään tämä asetus
Kontrolliin tullessa ja siitä poistuessa tapahtuvat seuraavat tapahtumat:
- Enter
- GotFocus
- TextChanged - tapahtuu aina kun tekstiä muutetaan
- Leave
- Validating - tarkistetaan onko syöte validi
- Validated - Tapahtuu vain jos syöte on ollut validi. Siivotaan mahdolliset virheilmoitukset
- LostFocus
Validating-tapahtumassa tarkistetaan onko kontrollissä kelvollista dataa. Jos ei ole niin asetetaan e.Cancel = true
Jos CausesValidation-ominaisuuden arvo on false niin Validating- ja Validated-tapahtumia ei tapahdu.
Virheellinen kohta havainnollistetaan errorProviderin avulla.
Validated-tapahtumassa poistetaan mahdolliset errorproviderit
Lomakkeen FormClosing-tapahtumassa voidaan asettaa e.Cancel = true jos halutaan estää lomakkeen sulkeminen. Jos asetetaan e.Cancel = false niin lomakkeen voi sulkea vaikka jossain kentissä olisikin virheellisiä syötteitä.
ValidateChildren-metodilla voi suorittaa kaikkien lomakkeen lapsien tarkistukset kerralla. ValidateChildren palauttaa true jos kaikki olivat valideja ja false jos jossain on virhe.
Käyttäjien kommentit