Sự kiện trong C#

0
382

Sự kiện là những hành động của người sử dụng như phím bấm, nhấp chuột, di chuyển chuột, vv, hoặc một số sự kiện như vậy là hệ thống tạo ra các thông báo. Ứng dụng cần phải đáp ứng các sự kiện khi chúng xảy ra. Ví dụ, ngắt. Sự kiện được sử dụng cho quá trình liên lạc.

Sử dụng đại diện với sự kiện

Các sự kiện được khai báo và đưa ra trong một lớp  và liên quan đến việc xử lý sự kiện sử dụng các đại diện trong cùng một lớp hoặc một số lớp khác. Các lớp có chứa sự kiện được sử dụng để công bố sự kiện này. Điều này được gọi là lớp nhà xuất bản. Một số lớp khác mà chấp nhận sự kiện này được gọi là lớp thuê bao. Sự kiện sử dụng mô hình nhà xuất bản-thuê bao.

Một nhà xuất bản là một đối tượng có chứa các định nghĩa của các sự kiện và các đại diện. Liên hợp sự kiện-đại diện cũng được định nghĩa trong đối tượng này. Một đối tượng lớp nhà xuất bản gọi sự kiện này và nó sẽ được thông báo đến các đối tượng khác.

Một thuê bao là một đối tượng chấp nhận sự kiện và cung cấp một xử lý sự kiện. Các đại diện trong lớp nhà xuất bản sẽ gọi phương thức (xử lý sự kiện) của lớp thuê bao.

Khai báo Sự kiện

Để khai báo một sự kiện bên trong một lớp, trước hết một loại đại diện cho sự kiện này phải được khai báo. Ví dụ,

public delegate string MyDel(string str);

Tiếp theo, sự kiện sẽ được khai báo, bằng cách sử dụng từ khóa event:

event MyDel MyEvent;

Các mã trước định nghĩa một đại diện có tên BoilerLogHandler và một sự kiện có tên là BoilerEventLog, sự kiện này sẽ gọi đại diện khi nó được tạo ra.

Ví dụ

namespace SampleApp {
   public delegate string MyDel(string str); //Khai báo một đại diện
	
   class EventProgram {
      event MyDel MyEvent;  //Khai báo một sự kiện
		
      public EventProgram() {
         this.MyEvent += new MyDel(this.WelcomeUser);
      }
		
      public string WelcomeUser(string username) {
         return "Welcome " + username;
      }		
      static void Main(string[] args) {
         EventProgram obj1 = new EventProgram(); //Tạo một thể hiện của lớp EventProgram
         string result = obj1.MyEvent("Oktot");
         Console.WriteLine(result);
      }
   }
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra các kết quả như sau:

Welcome Oktot

Chúc bạn thành công!

This site uses Akismet to reduce spam. Learn how your comment data is processed.