Wskazówki: deklarowanie i wywoływanie zdarzeń (Visual Basic)
W tym instruktażu demonstruje, jak zadeklarować i wywołania zdarzeń za klasę o nazwie Widget.Po wykonaniu kroków, warto przeczytać temat companion Wskazówki: obsługa zdarzeń (Visual Basic), która pokazuje, jak użyć zdarzenia z Widget obiektów, informacjami o stanie w aplikacji.
Klasa widżetu
Przyjmijmy na chwilę, że masz Widget klasy.Twój Widget klasa ma metodę, która może zająć dużo czasu na wykonanie i chcesz, aby aplikacji mają być w stanie wystawione z pewnego rodzaju wskaźnik ukończenia.
Oczywiście można utworzyć Widget obiektu Pokaż okno dialogowe procentu wykonania, ale następnie można byłoby zatrzymane z tego okna dialogowego w każdym projekcie, w którym używane Widget klasy.Dobre zasady projektowania obiektu jest pozwolić aplikacji, która korzysta z interfejsu użytkownika dojścia obiektu — chyba, że celem całego obiektu jest zarządzanie pole formularza lub okna dialogowego.
Celem Widget jest do wykonywania innych zadań, więc lepiej jest dodać PercentDone zdarzenia i umożliwiają procedury, która wywołuje Widget's metody obsługi, że zdarzenie i Wyświetl stan aktualizacji.PercentDone Zdarzeń można również zapewniają mechanizm anulowanie zadania.
Aby zbudować przykładowy kod dla tego tematu
Otwórz nowy Visual Basic aplikacji Windows projektu i utworzyć formularz o nazwie Form1.
Dodać dwa przyciski i etykiety do Form1.
Nazwy obiektów, jak pokazano w poniższej tabeli.
Obiekt
Właściwość
Ustawienie
Button1
Text
Uruchom zadanie
Button2
Text
Anuluj
Label
(Name), Text
lblPercentDone, 0
Na Projekt menu, wybierz polecenie Add Class dodać klasę o nazwie Widget.vb do projektu.
Aby zadeklarować zdarzenia dla klasy widżetu
Użyj Event słowo kluczowe, aby zadeklarować zdarzenie w Widget klasy.Należy zauważyć, że zdarzenie może mieć ByVal i ByRef argumenty, jako Widgetna PercentDone demonstruje zdarzeń:
Public Event PercentDone(ByVal Percent As Single, ByRef Cancel As Boolean)
Gdy obiekt wywołujący otrzymuje PercentDone zdarzenie, Percent argument zawiera procent wykonania zadania.Cancel Można ustawić argument True do metody, która wzbudziła Zdarzenie cancel.
[!UWAGA]
Można zadeklarować argumentów zdarzeń, tak samo, jak argumenty procedur, z następującymi wyjątkami: zdarzenia nie może mieć Optional lub ParamArray argumenty i zdarzenia nie ma wartości zwracanych.
PercentDone Zdarzenie jest wywoływane przez LongTask metoda Widget klasy.LongTaskma dwa argumenty: długość czasu metoda polującym wykonywał pracę i interwał minimalny czas przed LongTask wstrzymuje podnieść PercentDone zdarzenia.
Aby podnieść zdarzenie PercentDone
Aby uprościć dostęp do Timer Dodaj właściwość używana przez tę klasę, Imports instrukcji do początku sekcji deklaracji modułu klasy powyżej Class Widget instrukcji.
Imports Microsoft.VisualBasic.DateAndTime
Dodaj następujący kod do Widget klasy:
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
Gdy aplikacja wywołuje LongTask metody, Widget klasy podbicia PercentDone zdarzenie co MinimumInterval sekund.Gdy zdarzenie zwraca, LongTask kontrole, aby sprawdzić, czy Cancel wartość argumentu jest równa True.
Kilka zastrzeżenia są niezbędne w tym miejscu.Dla uproszczenia LongTask procedura zakłada wiadomo z góry ile czasu zajmie zadanie.Prawie nigdy nie jest tak.Dzielenie zadań na kawałki o rozmiarze nawet może być trudne, a często sprawach najbardziej użytkowników jest po prostu ilość czasu, jaki upływa zanim staną się wskazanie, że coś się dzieje.
Innym luka może mieć nanosi w tej próbce.Timer Właściwość zwraca liczbę sekund, które przeszły od północy; w związku z tym aplikacja pobiera zakleszczony, jeśli jest uruchomiona tuż przed północą.Bardziej ostrożne podejście do pomiaru czasu przenoszące warunków brzegowych, takich jak to pod uwagę, lub ich uniknięcia całkowicie przy użyciu właściwości takich jak Now.
Teraz, Widget klasy można podnieść zdarzenia, można przenieść do następnego przeglądu.Wskazówki: obsługa zdarzeń (Visual Basic)przedstawiono sposób użycia WithEvents do powiązanie programu obsługi zdarzeń z PercentDone zdarzenia.
Zobacz też
Zadania
Wskazówki: obsługa zdarzeń (Visual Basic)