[DOTNETVN] Tìm hiểu về event trong C#

Trong tip này tôi sẽ trình bày cho các bạn khái niệm cơ bản về event, cách sử dụng event trong C#

Event thực chất là cách mà một lớp thông báo đến người dùng khi có một hành động gì đó xảy ra trong ứng dụng như sự kiện nhấn phím, click chuột,...

Event thường được dùng nhiều trong lập trình giao diện nhầm tạo sự tương tác giữa người dùng và hệ thống.

Vậy khi nào bạn cần sử dụng đến event trong code của mình, bất cứ khi nào bạn cần thông báo một hành động gì đó bạn có thể sử dụng event. Để hiểu rõ hơn các bạn nên xem qua ví dụ nhỏ bên dưới.

Ví dụ: Tạo một lớp số nguyên với một phương thức kiểm tra nếu số được nhập vào là số chẳn thì xuất ra màn hình một dòng thông báo sử dụng event.

1. Tôi sẽ tạo một lớp có tên là NumberInterger

public class NumberInterger
{
    public event EventHandler ShowMessageEvent;
    
    public int Number { get; set; }

    public void Handle()
    {
        if (Number%2 == 0)
        {
            if (ShowMessageEvent != null)
            {
                ShowMessageEvent.Invoke(this,null);
            }
        }
    }
}

Trong class trên tôi khái báo 1 event có tên là ShowMessageEvent (EventHandler là một delegate mặt định có sẵn, tôi sẽ trình bài về rolex repliki sự kết hợp giữa event và delegate trong một bài viết khác), và một phương thức có tên là Handle xử lý nếu số được nhập vào là số chẳn tôi sẽ raise sự kiện ShowMessageEvent lên.

2. Xử lý trong hàm Main

class Program
{
    static void Main(string[] args)
    {
        NumberInterger numberInterger = new NumberInterger();
        numberInterger.Number = 2;
        numberInterger.ShowMessageEvent += NumberIntergerOnShowMessageEvent;
        numberInterger.Handle();
    }

    private static void NumberIntergerOnShowMessageEvent(object sender, EventArgs eventArgs)
    {
        Console.WriteLine("this is message");
    }
}

Để xử lý sự kiện bạn cần tạo một phương thức cho sự kiện ShowMessageEvent, ở đây tôi tạo một phương thức NumberIntergerOnShowMessageEvent để hiển thị thông báo mỗi khi sự kiện được raise lên từ lớp NumberInterger.

Nếu có thắc mắc hoặc đóng góp để cải thiện bài viết vui lòng comment bên dưới nhé wink

 

Thông tin bài viết