Olaylar ve temsilciler

Bir olay eyleme geçtiği sinyal için bir nesne tarafından gönderilen bir iletidir. Kullanıcı etkileşimi, fare tıklatma gibi eylem kaynaklanabilir veya bazı diğer program mantığı harekete geçirilebilir. Olayı oluşturan nesne olay gönderen denir. Olayı yakalar ve ona yanıt nesnesi olay alıcı olarak adlandırılır.

Olay iletişimde olay gönderen sınıfı hangi nesne veya yöntemi (tanıtıcı) alacak bilmez, harekete geçiren olaylar. Gerekli olan bir aracı olan (veya işaretçi benzeri mekanizma) kaynak ve alıcı arasında. .net Framework, özel bir türü tanımlar (Delegate), bir işlev işaretçisi işlevselliğini sağlar.

Bir temsilci yöntemi için bir başvuru tutan bir sınıftır. Diğer sınıfların aksine bir imzası temsilci sınıfında bulunan ve imzası uyan yöntemleri başvurular içerebilir. Bir temsilci, böylece denkliği işlev işaretçisi veya bir geri arama için eşdeğerdir. Temsilciler diğer kullanımlar olmakla birlikte, burada tartışma temsilcilerin işlevsellik işleme olayı odaklanır. Bir temsilci bildirimi bir temsilci sınıf tanımlamak yeterli olur. Bildirim temsilcisinin imzasıyla sağlar ve ortak dil çalışma zamanı uygulaması sağlar. Aşağıdaki örnek bir olay temsilci bildirimi gösterir.

Public Delegate Sub AlarmEventHandler(sender As Object, e As AlarmEventArgs)
public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
public delegate void AlarmEventHandler(Object^ sender, AlarmEventArgs^ e);

Sözdizimi, yöntem bildiriminde benzer; Ancak, temsilci anahtar sözcüğünü derleyici bildirir, AlarmEventHandler bir temsilci türüdür. Kural gereği, olay temsilcisini seçer.net Framework, iki parametre, harekete geçirilen olay ve olay için veri kaynağı vardır.

Örneğini AlarmEventHandler temsilci bağlama gibi kendi imzası ile eşleşen herhangi bir yöntemi AlarmRang yöntemi, WakeMeUp sınıfı aşağıdaki örnekte gösterildiği.

Public Class WakeMeUp
    ' AlarmRang has the same signature as AlarmEventHandler.
    Public Sub AlarmRang(sender As Object, e As AlarmEventArgs)
        '...
    End Sub
    '...
End Class
public class WakeMeUp
{
    // AlarmRang has the same signature as AlarmEventHandler.
    public void AlarmRang(object sender, AlarmEventArgs e)
    {
        //...
    }
    //...
}
public ref class WakeMeUp
{
public:
    // AlarmRang has the same signature as AlarmEventHandler.
    void AlarmRang(Object^ sender, AlarmEventArgs^ e)
    {
        //...
    }
    //...
};

Bir olayın olay verisi oluşturduğunda özel olay Temsilciler gereklidir. Fare tıklatmaları gibi bazı kullanıcı arabirimi olaylar dahil olmak üzere birçok olay olay veri oluşturmaz. Bu gibi durumlarda olay temsilcisini sağlanan sınıf Kitaplığı'nda veri yok olayını System.EventHandler, yeterlidir. Bildiriminde izler.

Delegate Sub EventHandler(sender As Object, e As EventArgs)
delegate void EventHandler(object sender, EventArgs e);
delegate void EventtHandler(Object^ sender, EventArgs^ e);

Olay Temsilciler noktaya yayın birden fazla olay işleme yöntemi başvurular tutabilir anlamına gelir ' dir. Ayrıntılar için bkz. Delegate. Temsilciler, olay İşlemede esneklik ve İnce Gren denetimi için izin verir. Bir temsilci olayı için kayıtlı olay işleyicileri listesini tutarak olayı başlatan sınıfı için bir olay dağıtıcısı olarak işlev görür.

Temsilciler bileşeni veya denetimi olay işlevselliği sağlamak için kullanma hakkında ayrıntılı bilgi için bkz: bir olay yükseltme.

Uygulamalarınızda olayları tüketen genel bakış için bkz: Tüketen olayları.

Ayrıca bkz.

Görevler

Nasıl yapılır: yükseltmek ve olayları tüketebilir

Nasıl yapılır: olay işleyicisi yöntemleri olaylarına bağlayın

Kavramlar

Olayları tüketen

Bir olayý çaðýrmak

Diğer Kaynaklar

İşleme ve olaylarını tetiklemeye yönelik