using System; using System.Windows.Forms; /* Komponentin lisääminen orrelle: Valitse menusta Component->Installed .NET Components Paina Select Assembly -nappia, vaiha assemblyn tyypiksi .exe etsi autol.exe Todo: käyttöliittymä timerille */ namespace Autol { /// /// Tapahtumaluokka laskurin onChange-tapahtumalle /// public class ChangeEvent : EventArgs { private int diff; public ChangeEvent(int diff) { this.diff = diff; } public int getDiff() { return diff; } } // Metodiosoitinolio tapahtumankäsittelijöitä varten public delegate void ChangeEventHandler(Object sender,ChangeEvent e); /// /// Laskuri jossa count-ominaisuus /// Vesa Lappalainen, 23.11.2003 /// Laajennettu tapahtumilla /// Miika Nurminen, 17.9.2004 /// public class Laskuri : System.Windows.Forms.Label { private int countVal=0; public event ChangeEventHandler change; // base kutsuu yliluokan konstruktoria public Laskuri() : base() { InitializeComponent(); reset(); } protected virtual void OnChange(ChangeEvent e) { // kutsutaan tapahtumakäsittelijöitä, jos niitä on if (change!=null) change(this,e); } public int count { get { // return Convert.ToInt32(Text); return countVal; } set { int diff = value-countVal; // kutsutaan yliluokan text-propertya, ettei tule rekursiota base.Text = "" + value; countVal = value; // Luodaan muutostapahtuma OnChange(new ChangeEvent(diff)); } } // Syrjäytetään Label-luokan text-property public override string Text { get { return base.Text; } set { try { int i = Convert.ToInt32(value); count = i; } catch (Exception e) { count = 0; } } } public void reset() { count = 0; } /// /// Kustomoitu OnClick - varmistaa, että laskuri lisääntyy, /// kun laskuria painetaan. /// (toinen vaihtoehto olisi ollut lisätä tapahtumakäsittelijä /// suoraan komponentin sisälle) /// protected override void OnClick(EventArgs e) { base.OnClick(e); // kutsuu yliluokan OnClick-metodia this.count+=1; } private void InitializeComponent() { // // Laskuri // this.BackColor = System.Drawing.Color.Aqua; this.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Text = "0"; this.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; } } }