Event’lar

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

Yorum bırakın