Omat komponentit - Luento 6

Luentotaltiointi

Ongelmia videon katselussa?

Jatketaan vielä komponenttien parissa. Käydään läpi edellisviikon demotehtävät.

Demovastaukset

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:

  1. Enter
  2. GotFocus
  3. Leave
  4. Validating
  5. Validated
  6. 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ä");

Creating a Custom Control Derived from a TextBox Control

WinForms Data Validation

Käyttäjien kommentit

Kommentoi tätä sivua Lisää uusi kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/gko/luennot/luento6/
© Antti Ekonoja (antti.j.ekonoja@jyu.fi) <http://users.jyu.fi/~anjoekon/>
Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
Jukka Mäntylä (jmantyla@iki.fi) <http://www.iki.fi/jmantyla/>
2010-10-04 16:03:55
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta