Sdílet prostřednictvím


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

Tento názorný postup ukazuje, jak deklarovat a zvýšit události pro třídu s názvem Widget.Po dokončení kroků můžete přečíst téma companion Názorný postup: Zpracování událostí (Visual Basic), který ukazuje použití události z Widget objekty a poskytují informace o stavu v aplikaci.

Třída pomůcka

Předpokládejme nyní, že máte Widget třídy.Vaše Widget třída má metodu, která může trvat dlouhou dobu spuštění a chcete, aby aplikace moci do určitého druhu indikátor dokončení.

Samozřejmě, nelze provést Widget objekt zobrazit procento dokončení dialogové okno, ale pak jste by zablokované toto dialogové okno v každém projektu jste použili Widget třídy.Je dobré zásady návrhu objektu nechat aplikaci, která používá popisovač objektu uživatelské rozhraní – není smyslem objekt na formuláři nebo v dialogovém okně Spravovat.

Účel Widget je provádění dalších úkolů, takže je lepší přidat PercentDone událostí a umožňují postup, který volá Widgetspolečnosti metody zpracování, že stav zobrazení událostí a aktualizuje.PercentDone Událostí mohou také poskytnout mechanismus pro zrušení úkolu.

Příklad kódu pro toto téma Vytvoření

  1. Otevřete nový Visual Basic aplikace Windows projektu a vytvořte formulář s názvem Form1.

  2. Přidat dvě tlačítka a popisek k Form1.

  3. Název objekty uvedené v následující tabulce.

    Objekt

    Property

    Nastavení

    Button1

    Text

    Spustit úlohu

    Button2

    Text

    Zrušit

    Label

    (Name), Text

    lblPercentDone, 0

  4. Na projektu nabídce zvolte Přidat třídu přidat třídu s názvem Widget.vb projektu.

Událost třídy pomůcka deklarovat

  • Použití Event klíčové slovo prohlásit událost Widget třídy.Všimněte si, že událost může mít ByVal a ByRef argumenty, jako Widgetna PercentDone ukazuje událostí:

    Public Event PercentDone(ByVal Percent As Single, 
                             ByRef Cancel As Boolean)
    

Jakmile obdrží volající objekt PercentDone události, Percent argument obsahuje procento dokončení úkolu.Cancel Argument lze nastavit na True metoda, která je aktivována událost zrušit.

[!POZNÁMKA]

Argumenty událostí můžete deklarovat, stejně jako argumenty procedury s následujícími výjimkami: události nemohou mít Optional nebo ParamArray argumenty a události nemají návratové hodnoty.

PercentDone Událost je aktivována pomocí LongTask metodu Widget třídy.LongTaskmá dva argumenty: doba metoda předstírá být způsobem práce a minimální časový interval před LongTask pozastaví zvýšit PercentDone událostí.

Zvýšit události PercentDone

  1. Zjednodušení přístupu k Timer přidat vlastnost používá tuto třídu Imports prohlášení na začátek části pro deklarace modulů tříd výše Class Widget prohlášení.

    Imports Microsoft.VisualBasic.DateAndTime
    
  2. Přidejte následující kód Widget třídy:

    Public Sub LongTask(ByVal Duration As Single, 
                        ByVal MinimumInterval As Single)
        Dim Threshold As Single
        Dim Start As Single
        Dim blnCancel As Boolean
    
        ' The Timer property of the DateAndTime object returns the seconds
        ' and milliseconds that have passed since midnight.
        Start = CSng(Timer)
        Threshold = MinimumInterval
    
        Do While CSng(Timer) < (Start + Duration)
            ' In a real application, some unit of work would
            ' be done here each time through the loop.
            If CSng(Timer) > (Start + Threshold) Then
                RaiseEvent PercentDone( 
                Threshold / Duration, blnCancel)
                ' Check to see if the operation was canceled.
                If blnCancel Then Exit Sub
                Threshold = Threshold + MinimumInterval
            End If
        Loop
    End Sub
    

Když aplikace zavolá LongTask metodou, Widget třídy vznese PercentDone událost každých MinimumInterval sekund.Při události vrátí, LongTask kontroly, zda Cancel argument byl nastaven na True.

Zde jsou nezbytné několik reklamace.Pro jednoduchost LongTask postup předpokládá vědět předem jak dlouho bude trvat úkolu.Je téměř nikdy případ.Rozdělení úkolů do bloků i velikost může být obtížné a často nejdůležitějším faktorem uživatelům je jednoduše množství času, který uplyne, než se dostanou označení, že se něco stalo.

Může mít jiný chyba nanese v tomto vzorku.Timer Vlastnost vrací počet sekund, které uplynuly od půlnoci; aplikace získá zablokované proto, pokud je spuštěna pouze před půlnocí.Více opatrně k měření doby by trvat hranice podmínky, jako je to v úvahu nebo jim zabránit, například pomocí vlastnosti Now.

Nyní, Widget třídy lze zvýšit události, můžete přesunout do dalšího postupu.Názorný postup: Zpracování událostí (Visual Basic)demonstruje použití WithEvents k přidružení obslužné rutiny události se PercentDone událostí.

Viz také

Úkoly

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

Referenční dokumentace

Timer

Now

Další zdroje

Události (Visual Basic)