Omat komponentit - Luento 6
Luentotaltiointi
Ongelmia videon katselussa?Jatketaan vielä komponenttien parissa. Käydään läpi edellisviikon demotehtävät.
Demovastaukset
- t1-t3
- t1-t3
- t1-t3
- t4 muuten hyvä mutta lomake venyy yli näytön! lomakkeen autoscroll-ominaisuus pitäisi laittaa päälle.
- t5
- t6
- t6
- t6
Lisää komponenteista
Jos propertyn palautustyyppi on joku muu kuin merkkijono tai numero niin pitää määritellä kaksi lisäfunktiota jotka ovat muotoa:
// antaa propertylle sen oletusarvon Reset<propertyn_nimi> // vertaa annettua arvoa oletusarvoon ShouldSerialize<propertyn_nimi>
esimerkiksi
public void ResetOmaVari()
{
OmaVari = Color.Blue;
}
public bool ShouldSerializeOmaVari()
{
return OmaVari != Color.Blue;
}
validating vs validated
Kontrollin tullessa ja siitä poistuessa tapahtuvat seuraavat tapahtumat:
- Enter
- GotFocus
- Leave
- Validating
- Validated
- LostFocus
Validating-tapahtumassa tarkistetaan onko kontrollissä kelvollista dataa. Jos ei ole niin asetetaan e.Cancel = true jolloin kontrollista ei päästä pois ennen kuin arvo on kelvollinen. Huom. kontrollista poistumisen estäminen ei ole aina toivottua!.
Virheellinen kohta havainnollistetaan errorProviderin avulla.
Validated-tapahtumassa poistetaan mahdolliset errorproviderit
Omaan komponenttiin kannattaa lisätä ominaisuus, josta voidaan lukea mahdollinen validointivirheilmoitus.
public class InvalidRangeException : ApplicationException
{
public InvalidRangeException(string s) : base(s)
{
}
}
throw new InvalidRangeException("Virhe lukuvälissä");

Käyttäjien kommentit