Danh mục

Các Chủ Đề Tiến Bộ Trong C# part

Số trang: 8      Loại file: pdf      Dung lượng: 155.22 KB      Lượt xem: 43      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Events ( Các sự kiện) Khi một ứng dụng chạy trên nền window nhận các thông báo khi môt việc gì đó xảy ra ta gọi đó là event . ví dụ khi ta nhấn nút chuột thì cửa sổ ứng dụng mà ta nhấn sẽ được thông báo event này .
Nội dung trích xuất từ tài liệu:
Các Chủ Đề Tiến Bộ Trong C# part Events ( Các sự kiện)Khi một ứng dụng chạy trên nền window nhận các thông báo khi môt việc gì đó xảy ra tagọi đó là event . ví dụ khi ta nhấn nút chuột thì cửa sổ ứng dụng mà ta nhấn sẽ đượcthông báo event này .Trong C# , các event thực sự là 1 dạng đặc biệt của delegateTuy nhiên ta không cần quan tâm các delegate bên dưới làm gì . ta sẽ tiếp cận event trênquan điểm phần mềm client ( client software). ta sẽ tập trung vào phần mã cần viết đểnhận các thông báo của event ,không cần quan tâm bên dưới làm gì .các event trong C# hơi giống với các khái niệm của VB mặc dù cú pháp và các thực thibên dưới thì không giống.Consumers view of event ( Cách nhìn của consumer về các event)Consumer ở đây là các ứng dụng mà muốn được thông báo khi điều gì đó xảy ra.cũng cóthể là các phần mềm khác( thường là hệ điều hành window hay .NET Framework ). taxem các phần mềm khác này là bộ phát sinh event ( event generator)Ở nơi nào đó trong consumer sẽ có 1 phương thức mà sẽ được gọi khi 1 MouseClick xaỷra.phương thức này đưọc gọi là event handler ( bộ xử lí event) cho event và 1 tên hay hơncho nó trong trường hợp này là OnClick() .để gửi đến bộ phát sinh event thông tin này,consumer sẽ phải đặt 1 tham chiếu đến OnClick() vào bên trong 1 delegate. mỗi lần bộphát sinh event có thông tin này ,khi thăm dò thấy chuột được nhấn, nó dùng delegate nàyđể gọi phương thức Onclick() của Consumer.Tất cả các bộ xử lí event phải trông giống như sau:void OnClick(object sender, EventArgs e) // e cũng có thể được dẫn xuất từ EventArgs{// mã xửlí event}Bộ xử lí event chỉ có thể trả về void.tất cả những gì bộ phát sinh event muốn làm là gọi 1phương thức. không cần biết consumer làm gì để đáp ứng.các bộ xử lí phải lấy 2 thôngsố. thông số đầu là 1 tham chiếu đến đối tượng sinh ra event. thông số thứ 2 phải là 1tham chiếu đến lớp cơ sở .NET , System.EvetnArgs ,hoặc là 1 lớp dẫn xuất từ nó.1 lớpdẫn xuất có thể chứa thông tin thêm về event như vị trí chuột ,phím nào được nhấn trênbàn phím.Để báo cho bộ phát sinh event biết ta quan tâm đến event. ta cần bộ phát sinh event tạo 1vài mục mà có thể nhận các yêu cầu cho thông báo. mục này sẽ là thành viên public củalớp .NET mà đại diện cho bộ phát sinh event,và là thành viên của kiểu event . thành viênnày là 1 dạng đặc biệt của multicast delegate.ta giả sử rằng consumer có 1 tham chiếu đếnbộ phát sinh event, qua trung gian là 1 biến tham chiếu gọi là Generator, và đó là thànhviên mà đại diện cho event được gọi là MouseClick. trong lớp consumer ,ta viết :EventGenerator Generator = GetAReferenceToTheEventGeneratorSomehow();Ta giả sử rằng EventGenerator đại diện cho lớp bộ phát sinh eventconsumer có thể thông báo với bộ phát sinh event rằng nó muốn nhận thông báo về việcnhấn chuột bằng dòng mã sau :Generator là 1 tham chiếu đến bộ phát sinh eventGenerator.MouseClick += OnClick();Khi bộ phát sinh event không quan tâm đến event này nữa ta có thể thông báo cho bộphát sinh event như sau :Generator.MouseClick -= OnClick();Consumer của ta có thể yêu cầu các thông báo của nhiều event mà nó muốn, thậm chí làyêu cầu các thông báo từ các nguồn khác.vì vậy mà thông số đầu tiên được truyền đến bộxử lí event là tham chiếu sender .ví dụ như trong một ứng dụng win form ta có nhiều nútnhấn , tất cả các nút đều có thể thông báo khi nó bị nhấn , bằng cách kiểm tra tham chiếusender ta có thể biết được nút nào được nhấn. ngoài ra các consumer khác nhau có thểyêu cầu được thông báo các event giống nhau.đơn giản chỉ việc cộng bộ xử lí event củanó vào các event bởi vì theo cách các multicast delegate làm việc , thì khi event được bắt,tất cả các bộ xử lí event sẽ được kích.Ví dụ về các Event : Console NotificationsTa sẽ xem xét ví dụ UserInputNotify.trong ví dụ này ta xét lại công ty điện thọaiMortimer Phones .ta sẽ viết 1 đoạn chương trình console nhỏ trình bày 1 thông điệp đến người dùng. trongví dụ người dùng sẽ chọn lựa giữa việc xem 1 thông điệp riêng từ Mortimer hay 1 quảngcáo chung. chương trình sẽ tiếp tục hỏi người dùng thông điệp muốn thấy cho đến khinguời dùng gõ X và nhấn Enter để thoát chương trình. tuy nhiên ta sẽ sắp xếp lại cấu trúcchương trình để dùng các event.Có 2 đối tượng cần quan tâm trong mã của ta :UserInputMonitor -đây là đối tượng mà tiếp xúc với người dùng . nó chịu trách nhiệm hỏinguời dùng thông điệp họ muốn thấy.MessageDisplayer - đây là đối tượng mà chịu trách nhiệm cho việc trình bày thông điệptương ứng.Bởi vì phần trình bày thông điệp không liên quan đến việc người dùng nhập , nên nókhông biết khi nào sẽ trình bày thông điệp hay thông điệp nào sẽ được trình bày - do đónó cần nhờ đến UserInputMonitor . UserInputMonitor sẽ làm điều này bằng cách đưa ra 1event. MessageDisplayer sẽ thông báo UserInputMonitor mà nó muốn được bảo khingười dùng yêu cầu trình bày thông điệp .sau đó khi người dùng tạo ra một yêu cầu,UserInputMonitor sẽ đưa ra 1 event tương ứng, ...

Tài liệu được xem nhiều:

Tài liệu có liên quan: