Sdílet prostřednictvím


Události (Visual Basic)

Zatímco mohou vizualizovat Visual Studio projektu jako postupy, které vykonávají v posloupnosti, ve skutečnosti většina programů jsou EventDriven – znamená tok provádění závisí na externí výskyty nazývá události.

Událost je signál, který informuje aplikaci, která něco důležité došlo.Například při klepnutí na ovládací prvek na formuláři, formulář může zvýšit Click událostí a postup, který zpracovává události volání.Události také umožnit komunikaci samostatné úkoly.Řekněme například, že aplikace provede řazení úkolů odděleně od hlavní aplikace.Pokud uživatel zruší řazení, aplikace odeslat událost zrušení odebíraném řazení proces zastavit.

Událost termíny a pojmy

Tato část popisuje termíny a pojmy použít s událostí v Visual Basic.

ms172877.collapse_all(cs-cz,VS.110).gifDeklarace události

Deklarovat události v rámci třídy, struktury, moduly a pomocí rozhraní Event klíčové slovo, jako v následujícím příkladu:

Event AnEvent(ByVal EventNumber As Integer)

ms172877.collapse_all(cs-cz,VS.110).gifZvýšení události

Událost je jako zpráva oznamující, že něco důležité došlo.AKT zprávy vysílání, se nazývá zvýšení události.V Visual Basic, zvýšit události se RaiseEvent prohlášení jako v následujícím příkladu:

RaiseEvent AnEvent(EventNumber)

Události musí být zvýšena v rozsahu třídy, modulu nebo struktury jsou.Například odvozené třídy nelze zvýšit události zděděna ze základní třídy.

ms172877.collapse_all(cs-cz,VS.110).gifOdesílatelé událostí

Je libovolný objekt schopné zvyšování událost odesílatele událostí, také známé jako Zdroj události.Formuláře, ovládací prvky a uživatelem definované objekty jsou příklady událostí odesílatelů.

ms172877.collapse_all(cs-cz,VS.110).gifObslužné rutiny událostí

Obslužné rutiny událostí jsou postupy, které jsou volány při odpovídající události dojde.Můžete použít libovolný platný podprogram s odpovídající podpis jako obslužnou rutinu události.Nelze použít funkci jako obslužné rutiny událostí, protože ji nemůže vrátit hodnotu pro zdroj události.

Visual Basicpoužívá standardní konvence pro obslužné rutiny událostí, které kombinuje jméno odesílatele událostí, podtržítko a název události.Například Click událostí na tlačítko s názvem button1 by s názvem Sub button1_Click.

[!POZNÁMKA]

Doporučujeme použít tuto konvenci při definování obslužné rutiny událostí, vlastní události, ale není vyžadován. můžete použít libovolný název platný podprogram.

Přidružení obslužné rutiny události

Před obslužné rutiny události bude použitelné, musíte nejprve spojit jej s událostí pomocí buď Handles nebo AddHandler prohlášení.

ms172877.collapse_all(cs-cz,VS.110).gifWithEvents a klauzule Handles

WithEvents Prohlášení a Handles klauzule poskytují deklarativní způsob určení obslužné rutiny událostí.Vznesené objektu události deklarované s WithEvents klíčové slovo může být zpracována jakéhokoli postupu s Handles prohlášení pro tuto událost, jak ukazuje následující příklad:

' 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 Prohlášení a Handles klauzule jsou často nejlepší volba pro obslužné rutiny událostí, protože deklarativní syntaxi, použití usnadňuje zpracování událostí kód, čtení a ladění.Mějte však následující omezení na používání WithEvents proměnných:

  • Nelze použít WithEvents proměnné jako proměnná objektu.To znamená, že nelze deklarovat jako Object– když deklarujete proměnnou, je nutné zadat název třídy.

  • Protože sdílené událostinejsou vázány na instance třídy, nelze použít WithEvents deklarativně zpracovávat události sdílené.Podobně nelze použít WithEvents nebo Handles ke zpracování událostí z Structure.V obou případech můžete AddHandler příkaz ke zpracování těchto událostí.

  • Nelze vytvořit pole WithEvents proměnné.

WithEventsProměnné umožňují zpracování jedné události zpracovat další druh události nebo obslužné rutiny zpracování stejného druhu události.

Přestože Handles klauzule je standardní způsob přiřazování událost obslužnou rutinu události, je omezena na přidružení obslužné rutiny událostí v čase kompilace.

V některých případech například události spojené s formulářů nebo ovládacích prvků, Visual Basic automaticky stubs mimo obslužné rutiny události prázdné a přidruží jej k události.Poklepáním například na příkazové tlačítko na formulář v návrhovém režimu, Visual Basic vytvoří obslužnou rutinu události prázdné a WithEvents proměnné pro příkazové tlačítko, jako v následujícím kódu:

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

ms172877.collapse_all(cs-cz,VS.110).gifAddHandler a RemoveHandler

AddHandler Je podobný příkazu Handles ustanovení, že obě umožňují zadat obslužnou rutinu události.Však AddHandler, použitý s RemoveHandler, poskytuje větší flexibilitu než Handles klauzule, umožňuje dynamicky přidat, odebrat a změnit obslužnou rutinu události související s událostí.Pokud chcete zpracovat sdílené události nebo události ze struktury, musíte použít AddHandler.

AddHandlermá dva argumenty: název události od odesílatele události jako ovládací prvek a výraz, který je vyhodnocen jako delegát.Není nutné explicitně určit Třída delegáta při použití AddHandler, protože AddressOf příkaz vždy vrací odkaz na delegáta.Následující příklad přidruží události vzniklé objektu obslužné rutiny události:

AddHandler Obj.XEvent, AddressOf Me.XEventHandler

RemoveHandler, který událost odpojení z obslužné rutiny události používá stejnou syntaxi jako AddHandler.Příklad:

RemoveHandler Obj.XEvent, AddressOf Me.XEventHandler

V následujícím příkladu je obslužné rutiny události související s událostí a událost je aktivována.Obslužné rutiny události úlovky a zobrazí zprávu.

Potom je odebrána první obslužné rutiny události a zpracování různé události je přidružena událost.Při události je znovu aktivována, se zobrazí různé zprávy.

Nakonec druhý obslužná rutina události je odebrána a událost je aktivována pro třetí čas.Protože je již obslužné rutiny události spojené s událostí, není provedena žádná akce.

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

Zpracování událostí, které dědí ze základní třídy

Odvozené třídy– třídy, které dědí vlastnosti ze základní třídy – může zpracovávat události pomocí jejich základní třídy HandlesMyBase prohlášení.

Zpracování události ze základní třídy

  • Obslužné rutiny události v odvozené třídě deklarujete přidáním Handles MyBase.eventname prohlášení k řádku prohlášení řád obslužné rutiny události kde eventname je název události v základní třídě jsou zpracování.Příklad:

    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
    

Související oddíly

Title

Description

Názorný postup: Deklarování a zvyšování události (Visual Basic)

Poskytuje podrobný popis jak deklarovat a zvýšení událostí třídy.

Názorný postup: Zpracování událostí (Visual Basic)

Ukazuje, jak napsat proceduru obslužnou rutinu události.

Jak: deklarovat vlastní události zabránit zablokování (Visual Basic)

Ukazuje, jak definovat vlastní události, který umožňuje jeho obslužné rutiny událostí má být volána asynchronně.

Jak: deklarovat vlastní události šetřit paměť (Visual Basic)

Ukazuje, jak definovat vlastní události, který používá paměti pouze v případě, že událost je zpracována.

Poradce při potížích dědí obslužné rutiny událostí v jazyce Visual Basic

Jsou uvedeny běžné problémy, které u obslužných rutin událostí v dědičné komponenty.

Zpracování a vyvolávání událostí

Obsahuje přehled modelu události v .NET Framework.

Vytvoření obslužné rutiny události v model Windows Forms

Popisuje, jak pracovat s události spojené s model Windows Forms objektů.

Delegáti (Visual Basic)

Přehled Delegáti v jazyce Visual Basic.