Interduction:
Svi smo culi za nasledjivanje klasa. Sa nasledjivanjem, klasama mozemo da prosirimo njihove standarne mogucnosti.
Objekti u .NETu su klase. Forma je klasa, TextBox je klasa, sve je klasa.
Ako zelite da vasu klasu ne moze niko da nasledi, kljucna rec 'sealed' (za C#) ili NotInheritable (za VB.NET) se koristi.
Ovde cu vam objasniti kako mozete da nasledite TextBox klasu i da joj dodate nove funkcionalnosti.
Posto standardni TextBox nema efekat promene boje TextBoxa, moramo to mi da uradimo.
Da ne postoji nasledjivanje klasa, sve bi ovo mogli da uradimo na drugi, tezi, nacin, bespotrebnim ponavljanjem slicnih kodova za svaki TextBox na Formi za LostFocus i GotFocus dogadjaje sto cini kod vecim i tezim za citanje.
Nasledjivanje nam prilazi u pomoc. Dodatnu funkcionalnost dodajemo u posebnu klase koja je nasledjena od TextBox klase.
How to:
Napravite novu klasu i ovaj kod prekopirajte u nju.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace Controls
{
public class textBox : TextBox
{
private Color _FocusedColor;
private Color _UnfocusedColor;
public textBox()
{
FocusedColor = FocusedColor;
}
protected override void OnGotFocus(EventArgs e)
{
this.BackColor = FocusedColor;
}
protected override void OnLostFocus(EventArgs e)
{
this.BackColor = UnfocusedColor;
}
public Color FocusedColor
{
get { return _FocusedColor; }
set { _FocusedColor = value; }
}
public Color UnfocusedColor
{
get { return _UnfocusedColor; }
set { _UnfocusedColor = value; }
}
}
}
Explanation:
Ovoj klasi smo dodati i nova svojstva (koja rec ) property-je za promenu boje kada TextBox dobije i izgubi fokus.
Za eventove OnLostFocus i OnGotFocus smo morali da koristimo kljucnu rec override iz razloga sto OnLostFocus i OnGotFocus vec postoje u klasi TextBox, na ovaj nacin ih preklopimo kako bi ih mogli koristiti.
Usage:
Da bi koristili ovu novu, nasledjenu klasu, umesto one standardne deklaracije TextBoxa
System.Windows.Forms.TextBox textBox1, koristicemo Controls.textBox textBox;
Conclusion:
Kada se pokrene ovakva aplikacija, primeticemo da se TextBox drugacije ponasa.
Zamislite kako bi kod izgledao da nismo koristili nasledjivanje i da na jednoj formi imamo 20 TextBox kontrola.
Za svaki TextBox bi imali po dva eventa OnGotFocus i OnLostFocus, ovako, uz pomoc nasledjivanje, nema tolike guzve u kodu.
|