Windows Forms jatkuu
Luentotaltiointi
Ongelmia videon katselussa?Jatketaan windows-ohjelmoinnin parissa ja käydään läpi edellisviikon demotehtävät.
Ensimmäisen viikon tehtävät
- Tehtävä 1
Tyypillisiä virheitä:
- Osattiin periä mutta ei osattu lisätä uusia attribuutteja
- Yritettiin viitata this-etuliitteellä metodille parametrina tuotuun muuttujaan
- Tehtävä 2
Tyypillisiä virheitä:
- Ei ole osattu erotella pieniä ja isoja kirjaimia
- Ei ole osattu avata komentoriviparametrina tuotua tiedoston nimeä
- Ei ole varmistettu, että tiedoston avaaminen onnistuu
- Tehtävä 3
- Ongelmia lokalisaation kanssa (, vs .). kts. Convert.ToDouble Method (Object, IFormatProvider)
- Tehtävä 4, malli2
Delegaatit ja tapahtumat
Tapahtumat
- Joku aiheuttaa tapahtuman: kiinnostuneet reagoivat siihen
- Tapahtumalla voi olla useita "kuulijoita". Sama kuulija voi seurata useita tapahtumia kerralla
- Tapahtuma jolla ei ole seuraajia ei myöskään koskaan tapahdu
- Tapahtumilla viestitään usein käyttäjän tekemisistä esim. painikkeiden painalluksista, menuvalinnoista jne.
- .NET-ympäristössä tapahtumat perustuvat EventHandler-delegaattiin ja EventArgs-luokkaan
Delegaatti on sama asia kuin funktio-osoitin. Delegaattien avulla voidaan vasta ohjelman suoritusaikana päättää mitä funktiota kutsutaan.
Delegaatteja käytetään erityisesti tapahtumapohjaisessa ohjelmoinnissa eli esim. windows-ohjelmoinnissa.
- Määritellään delegaatti
- Delegaattimäärittelyn palautustyyppi ja parametrit määräävät millaista funktiota voidaan käyttää
public delegate void Esimerkki(); public delegate void Esimerkki2(object sender, EventArgs e); // windows forms -tapahtumat
- Tapahtuman aiheuttavassa luokassa luodaan delegaatti:
public event Esimerkki tapahtuma; public event Esimerkki2 tapahtuma2;
- Jossain vaiheessa olion elämää se kutsuu delegaattiaan eli aiheuttaa tapahtuman:
tapahtuma(); tapahtuma2(this, e);
- Tapahtumalla pitää kuitenkin olla myös seuraaja eli joku, joka on luonut edellämainittua
luokkaa olevan olion ja määritellyt seuraajan tapahtumalle:
Foo joku = new Foo; joku.tapahtuma += new Esimerkki(funktio); - funktiota kutsutaan aina kun tapahtuu!
- Delegaattimäärittelyn palautustyyppi ja parametrit määräävät millaista funktiota voidaan käyttää
Lisätietoa:
- Introduction to Delegates and Events
- Delegaatit ja tapahtumankäsittelijät
- Delegates and Events in C#
- Delegates (C# Programming Guide)
- When to Use Delegates Instead of Interfaces
- Events
- anchor koon muuttuminen lomakkeen mukana
- combobox
- radiobutton
- flowlayoutpanel
- disabloitu kontrolli
- kontekstimenu

Käyttäjien kommentit