Mellékelt példa megnyitása előtt a TimeText alkönyvtárban lévő projektet fordítsuk le és szükség esetén telepítsük a ToolBox-ra az új kontrolt.
A kontrolt a mellékelt TimeText alkönyvtárban találjuk. Ahhoz, hogy folyamatosan meg tudjuk jeleníteni az aktuális időpontot a Label-en, nyilvánvaló hogy egy időzítőre lesz szükségünk, mely állandóan frissíti a Text property-t. Ehhez szükségünk lesz egy Timer komponensre.
private System.Timers.Timer timer = new System.Timers.Timer();
Az új kontrol konstruktorában beállítjuk az időzítő szükséges értékeit.
Az időzítést egy másodpercre állítjuk, így minden másodpercet megjeleníthetünk.
Létrehozunk egy eseménykezelőt az Elapsed eseményhez, mely akkor jön majd létre, ha az egy másodperc lejárt. Ekkor kerül majd meghívásra a DoElapsed nevű függvényünk.
timer.Elapsed += new ElapsedEventHandler(DoElapsed);
Végezetül engedélyezzük az időzítő futását.
Létrehozunk még két logikai típusú property-t is a kontrolhoz ShowDate és ShowTime névvel. Ezekkel szabályozhatjuk, hogy a megjelenítendő szövegben az aktuális dátum, vagy az időpont jelenjen meg, esetleg mindkettő.
Nézzük most a DoElapsed függvény működését.
Adott két logikai változó, hogy mit is kell megjelenítenünk. Ezeket kombinálva maximum négy lehetséges tennivalónk lehet. Így készítünk egy változót, melyben kiszámítjuk, hogy mit is kell tennünk.
private void DoElapsed(object source, ElapsedEventArgs e)
{
int i = 0;
A szám első bitje tárolja, hogy az időt meg kell-e jeleníteni.
A szám második bitje tárolja, hogy a dátumot meg kell-e jeleníteni.
if (showdate)
{
i += 2;
}
Ezek után már könnyű a dolgunk: egy switch-el elágaztathatjuk a programunkat négy irányba.
Ha mind a két property hamis, akkor a megjelenő szöveg egy null sztring lesz.
case 0:
Text = "";
break;
Ha a szám értéke egy, akkor csak az időpontot kell kiírni.
case 1:
Text = DateTime.Now.ToString("hh:mm:ss");
break;
Ha a szám kettő, akkor csak a dátumot kell kiírni.
case 2:
Text = DateTime.Now.ToString("yyyy. MM. dd.");
break;
Hármas esetén pedig mind a dátumra, mind az időpont kiírására szükség van.
case 3:
Text = DateTime.Now.ToString("yyyy. MM. dd. hh:mm:ss");
break;
}
}
A kontrolhoz az igen egyszerű teszt alkalmazás a TestApp alkönyvtárban található. Itt egy Form-ra elhelyezünk két TimeLabel kontrolt. Az egyiknél csak a dátum kijelzését, a másiknál csak az idő kijelzését engedélyezzük.