Aracılığıyla paylaş


Olaylar (Visual Basic)

Görselleştirmek ancak bir Visual Studio proje programların çoğu, gerçekte bir sırayla çalıştırmak yordamlar dizisi olarak olay denetimli olan — akışını yani adlı dış oluşum tarafından belirlenir olaylar.

Önemli bir şey oluştu uygulamaya bildiren bir sinyal bir olaydır.Örneğin, bir kullanıcı form üzerindeki bir denetimi tıklattığında forma yükseltebilirsiniz bir Click olay ve olay işleme bir yordam çağrısı.Olayları da ayrı görevler iletişim kurmasına olanak sağlar.Örneğin, uygulamanızın bir sıralama görevi ayrı ayrı ana uygulamadan yaptığını varsayalım.Bir kullanıcı sıralama iptal ederse, uygulamanızın hazırlamaktır sıralama işlemini durdurmak için İptal'i olay gönderebilirsiniz.

Olay terimler ve kavramlar

Terimler ve kavramlar olayları ile kullanılan bu bölümde açıklanmaktadır Visual Basic.

Olayları bildirme

Sınıflar, yapılar, modülleri ve arabirimleri kullanarak olayları bildirmek Event aşağıdaki örnekte olduğu gibi anahtar sözcük:

Event AnEvent(ByVal EventNumber As Integer)

Olaylarını tetiklemeye yönelik

Önemli bir şey oluştu duyurusu aşağıdakine benzer bir ileti bir olaydır.İleti yayınlama işlemi olarak adlandırılan yükseltme olay.De Visual Basic, olaylarıyla raise RaiseEvent deyimi, aşağıdaki örnekte olduğu gibi:

RaiseEvent AnEvent(EventNumber)

Olaylar burada bildirilir kapsamında modül sınıf veya yapı yükseltilmiş olması gerekir.Örneğin, türetilmiş bir sınıf temel sınıftan miras olaylarını oluşturamazlar.

Olay Gönderenler

Bir olayý çaðýrmak yeteneğine sahip herhangi bir nesne bir olay gönderenolarak da bilinir, bir olay kaynağı.Formlar, denetimleri ve nesneleri kullanıcı tanımlı olay Gönderenler örnektir.

Olay işleyicileri

Olay işleyicilerini karşılık gelen bir olayı oluştuğunda, çağrılan yordamlar.Bir olay işleyicisi eşleşen bir imza ile geçerli herhangi bir yordam kullanabilirsiniz.Olay kaynağı değer döndürülemez olduğundan, bir olay işleyicisi bir işlev ancak kullanamazsınız.

Visual BasicStandart adlandırma kurallarına olay gönderen, bir alt çizgi ve olayın adını adını bir araya getiren olay işleyicilerini kullanır.Örneğin, Click adlı bir düğmeye olay button1 olur Sub button1_Click.

[!NOT]

Kendi olayları için olay işleyicilerini tanımlarken bu adlandırma kuralını kullanın, ancak gerekli değildir öneririz; herhangi bir geçerli yordam adı kullanabilirsiniz.

Olaylar, olay işleyicileri ile ilişkilendirme

Bir olay işleyicisi kullanılabilir duruma gelir önce öncelikle bu olayla kullanarak ilişkilendirmeniz gerekir Handles veya AddHandler ifadesi.

WithEvents ve Handles yan tümcesi

WithEvents Deyimi ve Handles yan olay işleyicileri belirlemekte Bildirime dayanan bir yol sağlar.Bir nesne tarafından harekete geçirilen olay ile bildirilen WithEvents anahtar sözcüğü ile herhangi bir yordam tarafından işlenecek bir Handles deyimi aşağıdaki örnekte gösterildiği gibi bu olay için:

' Declare a WithEvents variable. 
Dim WithEvents EClass As New EventClass

' Call the method that raises the object's events. 
Sub TestEvents()
    EClass.RaiseEvents()
End Sub 

' Declare an event handler that handles multiple events. 
Sub EClass_EventHandler() Handles EClass.XEvent, EClass.YEvent
    MsgBox("Received Event.")
End Sub 

Class EventClass
    Public Event XEvent()
    Public Event YEvent()
    ' RaiseEvents raises both events. 
    Sub RaiseEvents()
        RaiseEvent XEvent()
        RaiseEvent YEvent()
    End Sub 
End Class

WithEvents Deyimi ve Handles yan tümcesi olan genellikle en iyi seçim için olay işleyicileri kullandıkları bildirimsel sözdizimi olay işleme kodu kolaylaştırır çünkü okumak ve hata ayıklama.Ancak kullanımı ile ilgili aşağıdaki sınırlamaları unutmayın WithEvents değişkenleri:

  • Kullanamazsınız bir WithEvents değişken olarak bir nesne değişkeni.Diğer bir deyişle olarak bildiremezsiniz Object— değişken bildirdiğinizde, sınıf adını belirtmeniz gerekir.

  • Çünkü olaylar paylaşılanolan sınıf örneklerini kurulamayacak, kullanamazsınız WithEvents hazırlanmasına paylaşılan olayları işlemek için.Benzer şekilde kullanamazsınız WithEvents veya Handles olaylarını işlemek için bir Structure.Her iki durumda da kullanabileceğiniz AddHandler bu olayları işlemek için deyimi.

  • Dizileri oluşturamıyor WithEvents değişkenleri.

WithEventsdeğişkenler, bir tek olay işleyicisi bir veya daha fazla türde bir olayın ya da aynı tür bir olayı işlemek için bir veya birden çok olay işleyicisini işleme izin verir.

Ancak Handles yan tümcesi bir olay olay işleyicisi ile ilişkilendirme standart yöntem, olayları Olay işleyicilerini derleme zamanında ilişkilendirme sınırlıdır.

Bazı durumlarda, form veya denetimleri olaylarıyla ilişkilendirilmiş gibi Visual Basic otomatik olarak boþ bir olay iþleyiciyi dosyaya yerleştirir ve bir olay ile ilişkilendirir.Örneğin, dosyayı çift tıklattığınızda Tasarım modunda, form üzerindeki bir komut düğmesini Visual Basic boþ bir olay işleyicisi oluşturur ve bir WithEvents değişken için aşağıdaki kodda olduğu gibi komut düğmesi:

Friend WithEvents Button1 As System.Windows.Forms.Button
Protected Sub Button1_Click() Handles Button1.Click
End Sub

AddHandler ve RemoveHandler

AddHandler Deyimi benzer Handles her ikisi de bir olay işleyicisi belirtmenize olanak veren, yan tümcesinde.Ancak, AddHandler, ile kullanılan RemoveHandler, daha çok esneklik sağlar Handles dinamik olarak eklemenize olanak veren yan tümcesi kaldırın ve olayla ilişkili olay işleyiciyi değiştirme.Paylaşılan olayları veya bir yapı olaylarını işlemek istiyorsanız kullanmalısınız AddHandler.

AddHandleriki baðýmsýz deðiþken alýr: bir denetim ve temsilciye sonucunu veren bir ifade gibi bir olay gönderen bir olay adı.Temsilci sınıfında kullanırken açıkça belirtmeniz gerekmez AddHandler, çünkü AddressOf ifadesi her zaman temsilcinin bir başvuru döndürür.Aşağıdaki örnek bir olay işleyicisi bir nesne tarafından harekete geçirilen olay ilişkilendirir:

AddHandler Obj.XEvent, AddressOf Me.XEventHandler

RemoveHandler, kullandığı aynı söz dizimini bulundurun, olaya bir olay işleyicisinden keser AddHandler.Örne?in:

RemoveHandler Obj.XEvent, AddressOf Me.XEventHandler

Aşağıdaki örnekte, bir olay işleyicisi bir olayla ilişkilendirilmiş olan ve olay ortaya çıkar.Olay işleyicisi olayı yakalar ve bir ileti görüntüler.

Sonra ilk olay işleyicisi kaldırıldı ve farklı olay işleyicisi olayla ilişkilendirilir.Olayı yeniden ortaya çıktığında farklı bir ileti görüntülenir.

Son olarak, ikinci olay işleyicisi kaldırıldı ve olay üçüncü bir kez oluşturulur.Olay ile ilişkilendirilmiş bir olay işleyicisi, artık çünkü hiçbir işlem yapılmaz.

Module Module1

    Sub Main()
        Dim c1 As New Class1
        ' Associate an event handler with an event. 
        AddHandler c1.AnEvent, AddressOf EventHandler1
        ' Call a method to raise the event.
        c1.CauseTheEvent()
        ' Stop handling the event. 
        RemoveHandler c1.AnEvent, AddressOf EventHandler1
        ' Now associate a different event handler with the event. 
        AddHandler c1.AnEvent, AddressOf EventHandler2
        ' Call a method to raise the event.
        c1.CauseTheEvent()
        ' Stop handling the event. 
        RemoveHandler c1.AnEvent, AddressOf EventHandler2
        ' This event will not be handled.
        c1.CauseTheEvent()
    End Sub 

    Sub EventHandler1()
        ' Handle the event.
        MsgBox("EventHandler1 caught event.")
    End Sub 

    Sub EventHandler2()
        ' Handle the event.
        MsgBox("EventHandler2 caught event.")
    End Sub 

    Public Class Class1
        ' Declare an event. 
        Public Event AnEvent()
        Sub CauseTheEvent()
            ' Raise an event. 
            RaiseEvent AnEvent()
        End Sub 
    End Class 

End Module

Bir temel sınıfından miras alınan olay işleme

Türetilmiş sınıfları— özellikleri Temel sınıftan kalıtımla sınıfları — kendi temel sınıf kullanarak harekete geçirilen olayları işleyebilirsiniz HandlesMyBase ifadesi.

Bir temel sınıf olaylarını işlemek için

  • Türetilmiş bir sınıf içinde bir olay işleyicisi ekleyerek bildirmek bir Handles MyBase.eventname olay işleyici yordamı, bildirim satırı deyimi burada eventname işleme taban sınıftaki olay adıdır.Örne?in:

    Public Class BaseClass
        Public Event BaseEvent(ByVal i As Integer)
        ' Place methods and properties here. 
    End Class 
    
    Public Class DerivedClass
        Inherits BaseClass
        Sub EventHandler(ByVal x As Integer) Handles MyBase.BaseEvent
            ' Place code to handle events from BaseClass here. 
        End Sub 
    End Class
    

İlgili Bölümler

Başlık

Description

İzlenecek yol: Olay Bildirme ve Oluşturma (Visual Basic)

Adım adım nasıl bildirmeyi ve bir sınıf olaylarını açıklamasını sağlar.

İzlenecek yol: Olayları İşleme (Visual Basic)

Bir olay işleyici yordamı yazma gösterilmiştir.

Nasıl yapılır: Engellemekten Kaçınacak Şekilde Özel Olayları Bildirme (Visual Basic)

Zaman uyumsuz olarak çağrılacak, olay işleyicileri izin veren özel bir olay tanımlamak gösterilmiştir.

Nasıl yapılır: Bellekten Kazanacak Şekilde Özel Olayları Bildirme (Visual Basic)

Yalnızca olay işlenir, bellek kullanan özel bir olay tanımlamak gösterilmiştir.

Visual Basic'de Devralınmış Olay İşleyicileri İle İlgili Sorun Giderme

Olay işleyicilerini devralınan bileşenleri ile ortaya çıkan genel sorunlar listelenmiştir.

Olaylar Oluşturma ve İşleme

Olay modelinde genel bakış sağlar .NET Framework.

Windows Forms'ta Olay İşleyicileri Oluşturma

Windows Forms nesnelerle ilişkili olayları ile çalışmak üzere nasıl açıklar.

Temsilciler (Visual Basic)

Visual Basic'te Temsilciler genel bakış sağlar.