Jumat, 27 Maret 2009

Event dan Event Handler Versi C#

melanjuti topik sebelumnya yang membahas mengenai event dan event handler under visual basic, kali ini kita akan membahas topik yang sama, tapi dengan memanfaatkan bahasa visual c#.

Event – sebuah kejadian yang dipicu oleh user. contohnya: user mengclick tombol, user memilih dari sebuah list, dan lain-lain.

Event Handler – sebuah prosedur yang digunakan untuk menangani event (kejadian) yang dipicu/dibangkitkan oleh user.

masih dengan project yang sama seperti kemarin, tapi kali ini kita tulis ulang dengan menggunakan C# sebagai languagenya :-)

image
code:

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 CSEventAndEventHandler
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("You Click Button 1");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("You Click Button 2");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            MessageBox.Show("You Click Button 3");
        }
    }
}

Event Handler nya bisa anda lihat pada partial class dari form1 yang terdapat pada file Form1.Designer.cs

image

image
perhatikan pada baris code:

this.button1.Click += new System.EventHandler(this.button1_Click);

code di atas memiliki arti kita mengikatkan event handler ke fungsi button1_Click pada saat user mengklik tombol button1 (event click).

hal yang sama juga diberlakukan untuk button2 dan button3.

selain dengan cara diatas, kita jg diperbolehkan untuk menyatukan beberapa Event untuk dihandle dengan satu buah Event Handler. contoh diatas kalau kita tulis ulang dengan maksud seperti kalimat sebelumnya akan menjadi:

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 CSEventAndEventHandler
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.button1.Click += new EventHandler(EV_Handler);
            this.button2.Click += new EventHandler(EV_Handler);
            this.button3.Click += new EventHandler(EV_Handler);
        }

        private void EV_Handler(object sender, EventArgs e)
        {
            Button button = sender as Button;
            if (button.Name.ToLower().Equals("button1"))
                MessageBox.Show("You Click Button 1");
            else if (button.Name.ToLower().Equals("button2"))
                MessageBox.Show("You Click Button 2");
            else if (button.Name.ToLower().Equals("button3"))
                MessageBox.Show("You Click Button 3");
        }
    }
}

kita juga dapat menambah dan menghapus Event dan Event Handler pada saat run time.
misalkan form di atas kita ubah menjadi seperti di bawah ini:

image

untuk keperluan penambahan dan penghapusan Event Handler pada saat run time, kita ubah code di atas menjadi seperti berikut ini:

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 CSEventAndEventHandler
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void EV_Handler(object sender, EventArgs e)
        {
            Button button = sender as Button;
            if (button.Name.ToLower().Equals("button1"))
                MessageBox.Show("You Click Button 1");
            else if (button.Name.ToLower().Equals("button2"))
                MessageBox.Show("You Click Button 2");
            else if (button.Name.ToLower().Equals("button3"))
                MessageBox.Show("You Click Button 3");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.button1.Click += new EventHandler(EV_Handler);
            this.button2.Click += new EventHandler(EV_Handler);
            this.button3.Click += new EventHandler(EV_Handler);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            this.button1.Click -= new EventHandler(EV_Handler);
            this.button2.Click -= new EventHandler(EV_Handler);
            this.button3.Click -= new EventHandler(EV_Handler);
        }
    }
}

operator overloading += digunakan untuk menambahkan event handler dan operator overloading –= digunakan untuk menghapus event handler.

terlihat dari yang disajikan di atas, cara yang ditawarkan oleh C# ini lebih efisien jika dibandingkan dengan yang ditawarkan oleh VB. keputusan akhir ada di tangan anda, ingin menggunakan C# atau VB.

ok, selamat mencoba.

Rgds
Adi

Tidak ada komentar: