Event Deyimi

Kullanıcı tanımlı olay bildirir.

[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Event eventname[(parameterlist)] _
[ Implements implementslist ]
' -or-
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Event eventname As delegatename _
[ Implements implementslist ]
' -or-
 [ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Custom Event eventname As delegatename _
[ Implements implementslist ]
   [ <attrlist> ] AddHandler(ByVal value As delegatename)
      [ statements ]
   End AddHandler
   [ <attrlist> ] RemoveHandler(ByVal value As delegatename)
      [ statements ]
   End RemoveHandler
   [ <attrlist> ] RaiseEvent(delegatesignature)
      [ statements ]
   End RaiseEvent
End Event

Bölümleri

Parça

Description

attrlist

İsteğe Bağlı.Bu olay için geçerli öznitelikler listesi.Birden çok öznitelik virgülle ayrılır.İçine almalısınız Öznitelik Listesi (Visual Basic) köşeli parantez içinde ("<"ve">").

accessmodifier

İsteğe Bağlı.Hangi kodu olay erişebileceklerini belirtir.Aşağıdakilerden biri olabilir:

  • Genel— onu bir öğesine erişmek herhangi bir kod da erişebilirsiniz.

  • Korumalı— kendi sınıf veya türetilmiş bir sınıf içinde kod erişebilmesi için yalnızca.

  • Arkadaş— kod aynı derlemede erişebilmesi için yalnızca.

  • Özel— yalnızca onu öğe kodu erişebilirsiniz.

Belirtebileceğiniz Protected Friend olay sınıfı, türetilmiş bir sınıf veya aynı derlemenin kodundan erişimini etkinleştirmek için.

Shared

İsteğe Bağlı.Bu olay bir sınıf veya yapı belirli bir örneğiyle ilişkili olmadığını belirtir.

Shadows

İsteğe Bağlı.Bu olay redeclares ve aynı adlı programlama öğesi veya bir taban sınıftaki aşırı yüklü öğeleri kümesi gizler gösterir.Her türlü ile bildirilen öðeyi, her türlü gölge.

Gölgeli bir öğesi, dışında gölgeleme öğesine erişilemez olduğu gelen gölgeleri türetilmiş bir sınıf içinde kullanılamaz.Örneğin, bir Private öğesi gölgeleri bir temel sınıf öğesi erişim iznine sahip değil kod Private öðeye eriþilir temel sınıf öğesi yerine.

eventname

Gerekli.Olay adı; değişken adlandırma kurallarına uyar.

parameterlist

İsteğe Bağlı.Bu olay parametreleri temsil eden yerel değişkenler listesi.İçine almalısınız Parametre Listesi (Visual Basic) parantez içinde.

Implements

İsteğe Bağlı.Bu olay bir olay, bir arabirimi uygulayan gösterir.

implementslist

Gerekli ise Implements sağlanır.Liste, Sub yordamları uygulanmakta.Birden çok yordamları virgüllerle ayrılır:

implementedprocedure [, implementedprocedure ...]

Her implementedprocedure aşağıdaki sözdizimi ve bölümleri vardır:

interface.definedname

Parça

Description

interface

Gerekli.Uyguladığı bu yordamı sınıf veya yapı içeren ait arabirimin adı.

definedname

Gerekli.Olarak yordam tanımlanmış ad interface.Bu aynı olmak zorunda değil name, bu yordamı tanımlı yordamı uygulamak için kullandığı ad.

Custom

Gerekli.Olayları bildirilen olarak Custom özel tanımlamanız gerekir AddHandler, RemoveHandler, ve RaiseEvent erişimcileri.

delegatename

İsteğe Bağlı.Olay işleyicisi imzayı belirtir bir temsilci adı.

AddHandler

Gerekli.Bildirir bir AddHandler bir olay işleyicisi eklendiğinde yürütmek için ifadeleri belirtir, ya da açıkça kullanarak erişen AddHandler deyimi veya dolaylı olarak kullanarak Handles yan tümcesi.

End AddHandler

Gerekli.Sona AddHandler blok.

value

Gerekli.Parametre adı.

RemoveHandler

Gerekli.Bildirir bir RemoveHandler belirten bir olay işleyicisi kullanarak kaldırıldığında yürütmek için ifadeleri erişimci RemoveHandler ifadesi.

End RemoveHandler

Gerekli.Sona RemoveHandler blok.

RaiseEvent

Gerekli.Bildirir bir RaiseEvent ifadeleri kullanarak olay oluştuğunda çalıştırılacak belirtir erişimci RaiseEvent ifadesi.Genellikle, bu Temsilciler tarafından tutulan listesini başlatır AddHandler ve RemoveHandler erişimcileri.

End RaiseEvent

Gerekli.Sona RaiseEvent blok.

delegatesignature

Gerekli.Gerekli parametrelerle eşleşen parametre listesi delegatename temsilcisi.İçine almalısınız Parametre Listesi (Visual Basic) parantez içinde.

statements

İsteğe Bağlı.Gövdeleri içeren deyimleri AddHandler, RemoveHandler, ve RaiseEvent yöntemleri.

End Event

Gerekli.Sona Event blok.

Notlar

Olayın bildirimi yapılmadı sonra RaiseEvent olayı oluşturmak için ifade.Tipik bir olay bildirilen ve aşağıdaki parçaları içinde gösterildiği gibi oluşturulur:

Public Class EventSource
    ' Declare an event. 
    Public Event LogonCompleted(ByVal UserName As String)
    Sub CauseEvent()
        ' Raise an event on successful logon. 
        RaiseEvent LogonCompleted("AustinSteele")
    End Sub 
End Class

[!NOT]

Yordamlar, aşağıdaki istisnalar bağımsız değişkenleri gibi olay bağımsız değişkenleri bildirebilirsiniz: olayları, bağımsız adlı olamaz ParamArray bağımsız değişkeni veya Optional bağımsız değişkenleri.Olayların dönüş değerleri yoktur.

Bir olayı işlemek için onu kullanarak bir olay işleyicisi altyordam ilişkilendirmeniz gerekir Handles veya AddHandler ifadesi.Altyordam ve olay imzalarını eşleşmesi gerekir.Paylaşılan bir olayý iþlemek için kullanmanız gerekir AddHandler ifadesi.

Kullanabileceğiniz Event modül düzeyinde.Yani bildiriminin içerik olay sınıfı, yapı, modül veya arabirim olmalıdır ve kaynak dosya, ad, yordam veya bloğu olamaz.Daha fazla bilgi için bkz. Bildirim Bağlamları ve Varsayılan Erişim Düzeyleri (Visual Basic).

Çoğu durumlarda, olayları bildirmek için bu konu sözdizimi bölümünde ilk sözdizimini kullanabilirsiniz.Ancak, bazı senaryolarda olayın ayrıntılı davranışı üzerinde daha fazla denetim yüklü olmasını gerektirir.Son sözdizimi kullanır Bu konu sözdizimi bölümünde Custom anahtar sözcüğü, özel olaylar tanımlamanıza olanak sağlayarak bu denetim sağlar.Özel bir olay tam olarak ne kod ekler ya da bir olay işleyicisi kaldırır veya olaydan oluşur veya ne zaman kodu olayı oluşturan belirtin.Örnekler için, bkz. Nasıl yapılır: Bellekten Kazanacak Şekilde Özel Olayları Bildirme (Visual Basic) ve Nasıl yapılır: Engellemekten Kaçınacak Şekilde Özel Olayları Bildirme (Visual Basic).

Örnek

Aşağıdaki örnek, 10'dan 0 saniye aşağı saymak olaylarýný kullanýr.Kod birkaç ifadeleri olayla ilgili yöntemleri ve özellikleri göstermektedir.Bu RaiseEvent ifadesi.

Bir olayı başlatan olay kaynağı sınıftır ve olay işleme yöntemlerini olay işleyicileridir.Birden çok işleyicileri, olaylar için olay kaynağı olabilir.Olay sınıfı harekete geçiren, o olay nesnesinin bu örnek için olayları işlemek için seçti her sınıf oluşturuldu.

Örnek bir form da kullanır (Form1) bir düğme ile (Button1) ve metin kutusunu (TextBox1).Düğmeyi tıklattığınızda, 10'dan geri sayım 0 saniye için ilk metin kutusunu görüntüler.Tam gün (10 saniye) geçtiğinde "Bitti" birinci metin kutusu görüntüler.

Kodu Form1 formun ilk ve terminal durumlarını belirtir.Bu olaylar oluştuğunda yürütülen kod içerir.

Bu örneği kullanmak için yeni bir Windows Forms projesi açın.Adlı bir düğme eklemek Button1 ve adlı bir metin kutusu TextBox1 ana forma adlı Form1.Formu sağ tıklatın ve tıklatın sonra View Code kod düzenleyicisini açın.

Ekleme bir WithEvents Tanımlamalar bölümünde değişken Form1 sınıfı:

Private WithEvents mText As TimerState

Koda aşağıdaki kodu ekleyip Form1.Bulunabilecek, gibi herhangi bir yinelenen yordamları yerine Form_Load veya Button_Click.

Private Sub Form1_Load() Handles MyBase.Load
    Button1.Text = "Start"
    mText = New TimerState
End Sub 
Private Sub Button1_Click() Handles Button1.Click
    mText.StartCountdown(10.0, 0.1)
End Sub 

Private Sub mText_ChangeText() Handles mText.Finished
    TextBox1.Text = "Done" 
End Sub 

Private Sub mText_UpdateTime(ByVal Countdown As Double
  ) Handles mText.UpdateTime

    TextBox1.Text = Format(Countdown, "##0.0")
    ' Use DoEvents to allow the display to refresh.
    My.Application.DoEvents()
End Sub 

Class TimerState
    Public Event UpdateTime(ByVal Countdown As Double)
    Public Event Finished()
    Public Sub StartCountdown(ByVal Duration As Double, 
                              ByVal Increment As Double)
        Dim Start As Double = DateAndTime.Timer
        Dim ElapsedTime As Double = 0

        Dim SoFar As Double = 0
        Do While ElapsedTime < Duration
            If ElapsedTime > SoFar + Increment Then
                SoFar += Increment
                RaiseEvent UpdateTime(Duration - SoFar)
            End If
            ElapsedTime = DateAndTime.Timer - Start
        Loop 
        RaiseEvent Finished()
    End Sub 
End Class

Önceki örneği çalıştırın ve etiketli düğmeyi tıklatın için F5 tuşuna Start.İlk metin kutusunu saniye saymak başlar.Tam gün (10 saniye) geçtiğinde "Bitti" birinci metin kutusu görüntüler.

[!NOT]

My.Application.DoEvents Yöntemi işleme olayları formu mu aynı şekilde.Doğrudan olayları işlemek için formunu etkinleştirmek için kullanabileceğiniz çoklu kullanım.Daha fazla bilgi için bkz. İş Parçacığı Oluşturma (C# ve Visual Basic).

Ayrıca bkz.

Görevler

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

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

Başvuru

RaiseEvent Deyimi

Implements Deyimi

AddHandler Deyimi

RemoveHandler Deyimi

Handles Tümcesi (Visual Basic)

Delegate Deyimi

Shared (Visual Basic)

Shadows (Visual Basic)

Diğer Kaynaklar

Olaylar (Visual Basic)