Sdílet prostřednictvím


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

Toto je druhá dvě témata, které ukazují, jak pracovat s událostí.První téma Názorný postup: události deklarující a zvýšení, ukazuje, jak deklarovat a zvýšení událostí.Tento oddíl používá formulář a třídy z tohoto návodu jak zpracování událostí, když budou probíhat.

Widget Třídy příkladu tradiční příkazy pro zpracování událostí.Visual Basicposkytuje další metody pro práci s událostí.Jako cvičení můžete upravit tento příklad použití AddHandler a Handles příkazy.

Zpracování události PercentDone pomůcka třídy

  • Umístěte následující kód v Form1:

    Private WithEvents mWidget As Widget
    Private mblnCancel As Boolean
    

    WithEvents Klíčové slovo určuje, že proměnná mWidget se používá pro zpracování událostí objektu.Druh objektu určíte zadáním názvu třídy, ze které chcete objekt vytvořen.

    Proměnná mWidget je deklarován v Form1 protože WithEvents proměnné musí být úroveň třídy.To platí bez ohledu na typ třídy, které umístíte, v.

    Proměnná mblnCancel slouží ke zrušení LongTask metoda.

Psaní kódu pro zpracování události

Jakmile deklarujete proměnnou pomocí WithEvents, název proměnné se zobrazí v levém rozevíracím seznamu třídy Editor kódu.Když vyberete mWidget, Widget třídy událostí se zobrazí v seznamu vpravo dolů.Událost vyberete, zobrazí se odpovídající událostní procedury s předponou mWidget a podtržítko.Všechny událostní procedury přidružené WithEvents proměnné jsou uvedeny jako prefix názvu proměnné.

Zpracování události

  1. Vyberte mWidget z levého rozevíracího seznamu v Editor kódu.

  2. Vyberte PercentDone událost ze seznamu vpravo dolů.Editor kódu otevře mWidget_PercentDone proceduru události.

    [!POZNÁMKA]

    Editor kódu je užitečné, ale nejsou vyžadovány pro vložení nové obslužné rutiny událostí.V tomto návodu je více přímé obslužné rutiny událostí pouze zkopírovat přímo do kódu.

  3. Přidejte následující kód do obslužné rutiny události mWidget_PercentDone:

    Private Sub mWidget_PercentDone( 
        ByVal Percent As Single, 
        ByRef Cancel As Boolean 
    ) Handles mWidget.PercentDone
        lblPercentDone.Text = CInt(100 * Percent) & "%"
        My.Application.DoEvents()
        If mblnCancel Then Cancel = True
    End Sub
    

    Vždy, když PercentDone událost je aktivována, procedura události zobrazuje procentuální hodnotu dokončení v Label řízení.DoEvents Metoda umožňuje popisku, který chcete překreslit a také poskytuje uživateli možnost klepněte Zrušit tlačítko.

  4. Přidejte následující kód Button2_Click obslužné rutiny události:

    Private Sub Button2_Click( 
        ByVal sender As Object, 
        ByVal e As System.EventArgs 
    ) Handles Button2.Click
        mblnCancel = True
    End Sub
    

Pokud uživatel klepne Zrušit tlačítko při LongTask je spuštěna Button2_Click událostí je proveden co nejdříve DoEvents prohlášení umožňuje zpracování události dojít.Proměnné třídy úroveň mblnCancel je nastavena na Truea mWidget_PercentDone události pak ověří a nastaví ByRef Cancel argument True.

Proměnná WithEvents připojení k objektu

Form1je nyní nastaven pro manipulaci Widget objektu události.Všechna tato zůstává je najít Widget jinde.

Pokud deklarujete proměnnou WithEvents v době návrhu, je mu přiřazena žádný objekt.A WithEvents proměnná je stejně jako ostatní objektové proměnné.K vytvoření objektu a přiřadit odkaz na s WithEvents proměnné.

Vytvoření objektu a přiřadit na něj odkaz

  1. Vyberte (Form1 události) z levého rozevíracího seznamu v Editor kódu.

  2. Vyberte Load událost ze seznamu vpravo dolů.Editor kódu otevře Form1_Load proceduru události.

  3. Přidejte následující kód Form1_Load proceduru události, vytvořte Widget:

    Private Sub Form1_Load( 
        ByVal sender As System.Object, 
        ByVal e As System.EventArgs 
    ) Handles MyBase.Load
        mWidget = New Widget
    End Sub
    

Při provádění tohoto kódu Visual Basic vytvoří Widget objektu a jeho události připojí do procedury události spojené s mWidget.Od této chvíle, kdykoli Widget zvýší jeho PercentDone události, mWidget_PercentDone spuštění procedury události.

Volat metodu LongTask

  • Přidejte následující kód do obslužné rutiny události Button1_Click:

    Private Sub Button1_Click( 
        ByVal sender As Object, 
        ByVal e As System.EventArgs 
    ) Handles Button1.Click
        mblnCancel = False
        lblPercentDone.Text = "0%"
        lblPercentDone.Refresh()
        mWidget.LongTask(12.2, 0.33)
        If Not mblnCancel Then lblPercentDone.Text = CStr(100) & "%"
    End Sub
    

Před LongTask je volána metoda, popisek, že zobrazuje procentuální hodnotu dokončení musí být inicializována a úrovně třídy Boolean příznak pro zrušení metody musí být nastavena na False.

LongTasknazývá se doba trvání úkolu 12.2 sekund.PercentDone Událost je aktivována jednou každé třetině podruhé.Pokaždé, když je aktivována událost, mWidget_PercentDone spuštění procedury události.

Při LongTask je v mblnCancel je testováno, zda LongTask skončila normálně, nebo pokud je zastaven, protože mblnCancel byla nastavena na True.Procentuální hodnota dokončení je aktualizován pouze v případě bývalé.

Spustit program

  1. Stisknutím klávesy F5 do režimu spuštění projektu.

  2. Klepněte Spustit úkol tlačítko.Pokaždé, když PercentDone událost je aktivována, popisek je aktualizován a procento dokončení úkolu.

  3. Klepněte Zrušit tlačítko Ukončit úlohu.Všimněte si, že vzhled Zrušit tlačítko nezmění okamžitě po klepnutí.Click Událostí nemůže dojít až My.Application.DoEvents prohlášení umožňuje zpracování událostí.

    [!POZNÁMKA]

    My.Application.DoEvents Metody zpracování události stejným způsobem jako formuláře.Například v tomto návodu, musíte klepnout Zrušit tlačítko dvakrát.Chcete-li formulář pro zpracování událostí přímo, můžete použít s více podprocesy.Další informace naleznete v tématu Zřetězení (C# a Visual Basic).

Bude pravděpodobně významné spustit program s F11 a kód krokovat řádek najednou.Jasně uvidíte, jak spuštění zadá LongTaska stručně re-enters Form1 pokaždé, když PercentDone událost je aktivována.

Co by nastat pokud během spuštění je zpět do kódu Form1, LongTask metoda byla volána znovu?V nejhorším případě přetečení zásobníku může dojít k LongTask byla vyvolána pokaždé byla aktivována událost.

Proměnné může způsobit mWidget ke zpracování událostí pro jinou Widget přiřazením odkaz na nový objekt Widget na mWidget.V zásadě lze vytvořit kód v Button1_Click provést při každém klepnutí na tlačítko.

Zpracování události pro různé pomůcka

  • Přidejte následující řádek kódu Button1_Click postup, bezprostředně předcházejícím řádku, který čte mWidget.LongTask(12.2, 0.33):

    mWidget = New Widget
    ' Create a new Widget object.
    

Výše uvedený kód vytvoří nový Widget při každém klepnutí na tlačítko.Co nejdříve LongTask metoda dokončí odkaz na Widget je uvolněna a Widget zničen.

A WithEvents proměnná může obsahovat pouze jeden objekt odkaz v čase, tak pokud přiřadíte jinou Widget objekt na mWidget, předchozí Widget již zpracování objektu události.Pokud mWidget je pouze proměnnou objekt obsahující odkaz na původní Widget, objekt je zničen.Chcete-li zpracovávat události z několika Widget objekty, použijte AddHandler příkaz zpracovat události z každý objekt samostatně.

[!POZNÁMKA]

Můžete deklarovat tolik WithEvents proměnné, jako je třeba ale matice WithEvents proměnné nejsou podporovány.

Viz také

Úkoly

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

Další zdroje

Události (Visual Basic)