Olaylar (Events) Kullanıcının butona tıklaması, textbox’a bilgi yazması, listbox’dan eleman seçmesi vb.. form üzerinde gerçekleştirilen eylemlerdir.
Bir bileşen üzerinde meydana gelen olayları takip eden ve bunları yakalayan mekanizma event handler olarak adlandırılır. Event Handler ilgili olay gerçekleştiği zaman tetiklenir. Olay gerçekleştikten sonra hangi işlemlerin yapılacağı olay yöneticileri için delegeler ile temsil edilir. Bir kullanıcının fare ile tıklaması örneğin bir Click olayıdır, bir tuşa basma olayı bir Keypress olayıdır ve bu olayların sonucunda nelerin yapılması gerektiğini biz kodlarımızla belirtebiliriz.
Yeni bir olay tanımlamak için event deyimi kullanılır. Olayları tetiklemek için ise olayın ismi kullanılmaktadır. Tıpkı delegelerde olduğu gibi bir olayı bir metota bağlamak için “+=” çıkarmak için ise “-=” kullanılır. Yalnız bu noktada dikkat edilmesi gereken durum, olayların bağlanacağı metotların imza yapıları olayın türü iolan delege ile aynı olmalıdır. Buradan tabi şunu da anlayabiliriz. Bir eventten önce mutlaka bir delege tanımlanmalıdır. Event önünce access modifier tanımlanabilir, public, private, protected, internal, abstract, new override, static, virtual gibi.
Bir Windowsform application açıp formun KeyPreview özelliğini True yapıyor formun üzerine bir buton ekliyoruz…
void mesaj(object sender, EventArgs e) { MessageBox.Show("Butona Basıldı"); } void bas(object sender, KeyEventArgs e) { switch (e.KeyCode.ToString()) { case "A": MessageBox.Show("A Tuşuna basıldı"); break; case "B": MessageBox.Show("B Tuşuna basıldı"); break; } } private void Form1_Load(object sender, EventArgs e) { button1.Click += new EventHandler(mesaj); KeyDown += new KeyEventHandler(bas); }
Şimdide başka bir örnek ile Events(Olaylar) konusuna devam edelim yeni bir proje oluşturup formun üzerine bir buton yerleştiriyoruz.
Burada yapacağımız butona fare ile tıklandığında farenin hangi tuşuna basılıyor onu kontrol etmek
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication9 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } void fare(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { MessageBox.Show("Sol Tuşa Basıldı"); } if (e.Button == MouseButtons.Right) { MessageBox.Show("Sağ Tuşa Basıldı"); } if (e.Button == MouseButtons.Middle) { MessageBox.Show("Orta Tuşa Basıldı"); } } private void Form1_Load(object sender, EventArgs e) { button1.MouseDown+=new MouseEventHandler(fare); } } }