Event’lar
Olay bildirimi için Delegate(temsilci) ile birlikte kullanılan ifadelerdir. Örneğin Button Event’ı. Button’a basılınca istenilen fonksiyon çalıştırılır. Bu fonksiyonu çağıran ise olay yöneticisi dediğimiz temsilcilerdir.
Kullanım;
Erişim_Belirteci event Temsilci_Adı(Delegate) Olay_İsmi
Örnek 1;
Bu örnekte basitçe event nasıl çalışır ona bakıyoruz.
delegate void Temsilci(); class Sinif { pubolic event Temsilci Eventim;//Event property olarak yazılarak delegateye bağlandı public void eventMetodu() { if(Eventim != null) { Eventim(); } } } class Program { static void main() { Sinif mySinif = new Sinif(); mySinif.Eventim += new Temsilci(my_eventim);//Event üzerine ekleme. mySinif.eventmetodu(); Console.ReadKey(); } } static void my_eventim() { Console.Write("Olay Oldu"); }
Örnek 2;
Bu örnekte ise stok miktarı hikayesi oluşturup stok azaltıyoruz. Stok<0 olduğu zaman olay tetiklenip “toptancı gelecek” mesajı veriyor.
delegate void StokAzaldiEvent(); class Urun { public event stokAzaldiEvent stokAzaldi; private string adi; private int stokMiktar; public int StokMiktarı { get{return stokMiktar;} set{stokMiktar = value; if(value<10 && StokAzaldi != null) StokAzaldi(); } } public string ad { get{return ad;} set{ad = value;} } public Urun(string adi,int StokSayisi) { ad = adi; stokMiktar = StokSayisi; } } class program { static void Main() { Urun gazoz = new Urun("Niğde",35); gazoz.stokAzaldi += new stokAzaldiEvent(gazoz_stok); //Delgate'e bağlandı. for(i=0;i<10;i++){//Burada stok miktarı 10 defa azaltılıyor. //i<10 yerine stok miktarı ayarlanabilir. gazoz.stokMiktar; -=2; thread.Sleep(600); cw(gazoz.ad + "için stok miktarı:" gazoz.StokMiktarı.toString()); } Console.ReadKey(); } static void gazoz_stok() { Console.WriteLine("Toptancı Gelecek"); } }
Örnek 3;
Burada projeye referens kısmından Windows Forms kütüphanesi eklenmeli. Sürükle bırak olmadan form uygulaması. Ne kadar zor değil mi? 🙂
using System.Windows.Forms; public delegate void StartDelegate(); class eventDemo : Form { public event StartDelegate StartEvent; public eventDemo() { Button click = new Button(); click.Parent = this; click.Text = "Buton"; click.Click += new EventHandler(onClick); StartEvent += new StartDelegate(onStartEvent); StartEvent(); } public void onClick(object sender, EventArgs e) { MessageBox.Show("You Clicked!"); } public void onStartEvent() { MessageBox.Show("I Just Started"); } } namespace Finaller { class Program { static void Main(string[] args) { Application.Run(new eventDemo()); Console.ReadKey(); } } }