На головну

Використання подій в компонентах .NET

Платформа .NET визначає деякі додаткові правила використання подій при створенні власних компонентів, які будуть використовуватися спільно з .NET компонентами, і їх необхідно дотримуватися. Якщо створювати повторно використовувані компоненти з подіями, що працюють не тільки в проекті C #, то необхідно враховувати деякі обмеження. В основному ці вимоги пред'являються до делегату і носять, швидше, синтаксичний характер, не обмежуючи суті справи.

Ці обмеження полягають в наступному:

* Делегат, що задає тип події, повинен мати фіксовану сигнатуру з двох аргументів: delegate <Імя_делегата> (object sender, <Тіп_аргументов> args); в .NET вже визначено відповідний комбінований делегат:

System.EventHandler.public delegate void EventHandler (object sender, EventArgs e);

* Перший аргумент задає об'єкт sender, Що створює повідомлення. другий аргумент args задає інші аргументи - вхідні і вихідні, - передаються оброблювачу. Тип цього аргументу повинен задаватися класом, похідним від вбудованого в.Net Framework класу EventArgs. Якщо оброблювачу ніяких додаткових аргументів не передається, то слід просто вказати клас EventArgs, Передаючи null в якості фактичного аргументу при включенні події;

* Рекомендований ім'я делегата - складене, що починається ім'ям події, після якого слід слово EventHandler, Наприклад, FireEventHandler. Якщо ніяких додаткових аргументів оброблювачу не передається, то тоді можна взагалі делегата не оголошувати, а користуватися стандартним делегатом з ім'ям EventHandler.

Наведемо приклад програми використовує подія натискання на кнопку:

using System;

using System.WinForms;

public class SampleForm: Form

{

 private Button button1 = new Button ();

 public static void Main (String [] args) {Application.Run (new SampleForm ()); }

 public SampleForm ()

{

 this.Text = "Delegates & Events";

 button1.Text = "Event";

 button1.Click + = new System.EventHandler (buttonClicked);

 this.Controls.Add (button1);

}

 private void buttonClicked (object sender, EventArgs evArgs)

{

 MessageBox.Show ( "Кнопка була натиснута!");

}

}



Багатоцільова обробка події. | Класи з великим числом подій

Події. | Використання подій в компонентах .NET. | оголошення події | Використання події | Що об'єднує події, делегати та властивості | Завдання на лабораторну роботу |

© um.co.ua - учбові матеріали та реферати