Merhaba arkadaşlar,
yazmayalı çok oldu özledim yazmayı (: işlerden fırsat bulamadım desem yeridir. daha once verdiğim Grid sınıfında BeforeCellPrint ,Rowprint gibi eventlar görmüşsünüzdür. arkadaşlarıdan biri msnden bunların nasıl çalıştığını sordu. sınıftaki kullanımını incelese sanırım olayı tam anlamak için bunu bana iletti. olaylarla mimari geliştirmek programlamada büyük önem arz eder. hemen her programcı kodladığı winForm uygulamalarında buton_Onclick olayı ile tanışmıştır. C#ta eventlar delegateler sayesinde olur. delegate türke anlamıyla vekil (aracı) demek. öyle bir tp düşünün ki bu bir fonksiyon tipine denk geliyor. fonksiyon tanımına uyan bir tip belirliyorsunuz
örnek:
public delegate void DataSourceChangedEventHandler(D3Grid sender, DataTable currentData, DataTable newData);
grid sınıfımız DataTable içindeki satırlar ve sütunlarla bir html tablo oluşturuyor bildiğiniz gibi. Datasource değiştiğinde tetiklenmesini istediğim bazı olaylar vardı ve bunlar için DataSourceChangedEventHandler tipinden fonksiyonlara denk gelecek bu delegate tanımını yazdım. sınıfın kendisini ,mevcut datatable’i ve atanan datatable’i parametre olarak verdik. fonksiyonlarımızı atayabileceğimiz bir de event tanımadık
public event DataSourceChangedEventHandler DataSourceChanged;
bunun tetiklenmesini şu şekilde sağladık.
private DataTable _datatable;
public DataTable DataSource
{
get
{
return _datatable;
}
set
{
if (DataSourceChanged != null)
{
DataSourceChanged(this, _datatable, value);
}
_datatable = value;
}
}
Datasource propertysi set edildiğinde DataSourceChanged adlı elemanımıza olay atanmışsa bunun parametrelerini verip tetiklenmesini sağladık.
bu anlatımım için de yine her anlatımımda olduğu gibi örnekler artııkça sizinle paylaşacağım.
iyi çalışmalar.











