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í
Otevřete nový Visual Basic aplikace Windows projektu a vytvořte formulář s názvem Form1.
Přidat dvě tlačítka a popisek k Form1.
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
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
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
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)