Делегаты
Контрольные вопросы. Компьютерный практикум
Делегаты используются в среде .NET Framework для построения механизмов обработки событий. Когда возникает событие, делегат вызывает соответствующий обработчик события.
Делегат по умолчанию автоматически связывается с одним обработчиком события. В программном коде языков .NET это реализуется по-разному. В языке Visual Basic .NET непосредственно в заготовке обработчика события делегат указывается после служебного слова Handles, например обработчик события Button1 Click вызывается делегатом Button1.Click.
Делегат события может вызывать несколько различных обработчиков событий. Групповой делегат обеспечивает уведомление «один делегат ко многим обработчикам событий», т. е. последовательно вызывает несколько обработчиков событий из списка вызова.
Обработчик событий может вызываться делегатами различных событий, т. е. обеспечивается уведомление «многие делегаты к одному обработчику события». В этом случае связь между делегатами и обработчиками событий устанавливается программистом вручную. Например, событие, возникающее при нажатии кнопки, и событие, возникающее при щелчке по команде меню, могут использовать делегаты, которые затем вызовут один и тот же обработчик событий для одинаковой обработки этих разных событий.
Делегаты используются в среде .NET Framework для вызова процедур-обработчиков событий. Механизм действия делегатов следующий: событие — создание делегата события — вызов процедур-обработчиков событий.
По умолчанию событие создает «свой» делегат, который автоматически вызывает «свой» обработчик события. Например, щелчок по кнопке Button1 соответствует событию Click, которое создает делегат Button1.Click, вызывающий процедуру-обработчик событий Button1Click.
При создании процедуры-обработчика события (метода) делегат автоматически записывается:
• на языке Visual Basic .NET в строке имени процедуры после ключевого слова Handles (англ. «управляемый»);
• на языках Visual C# и Visual J# в разделе программного кода Windows Form Designer generated code, после ключевого слова this (англ. «этот»).
Язык Visual Basic .NET:
Private Sub Button1_Click{ByVal sender As System.Object, ByVal e As System,EventArgs) Handles Button1.Click
Язык Visual C#:
this.button1.Click += new System, EventHandler(this.button1_Click);
Язык Visual J#:
this.button1.add_Click(new System. EventHandler(this.buttonl_Click));
Следующая страница Проект «Делегаты»