Udostępnij za pośrednictwem


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

  1. Otwórz nowy Visual Basic aplikacji Windows projektu i utworzyć formularz o nazwie Form1.

  2. Dodać dwa przyciski i etykiety do Form1.

  3. 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

  4. 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

  1. 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
    
  2. 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)

Informacje

Timer

Now

Inne zasoby

Zdarzenia (Visual Basic)