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;
}
}
}