ПОНЯТНО О Visual Basic NET (том 3)


Первый способ создания и обработки событий: WithEvents - часть 2


Private Sub Счет_Не_хватает_денег() Handles Счет.Не_хватает_денег

        Label1.Text = "На счете не хватает денег"

End Sub

Класс:

Public Class clsСчет

    Private Сумма_на_счете As Decimal = 1000

    Public Event

Не_хватает_денег()

    Public Sub Снятие_со_счета(ByVal Сумма_к_снятию As Decimal)

        If Сумма_на_счете - Сумма_к_снятию >= 0 Then

            Сумма_на_счете = Сумма_на_счете - Сумма_к_снятию

        Else

            RaiseEvent

Не_хватает_денег()

        End If

    End Sub

End Class

Пояснения: Вот последовательность действий банковского программиста, пишущего код класса и решившего использовать события:

Сначала он должен придумать событиям подходящие имена и объявить их при помощи слова Event (событие):

    Public Event

Не_хватает_денег()

Затем он должен крепко подумать, в какие моменты выполнения кода его класса должны возникать эти события и во все места кода класса, где оно должно возникать, вставить оператор, порождающий это событие:

            RaiseEvent

Не_хватает_денег()

В нашем случае событием является любая попытка сделать значение переменной Сумма_на_счете отрицательным. Такая попытка предпринята только в одном месте программы, поэтому оператор RaiseEvent встречается только один раз. В больших программах мест в коде, где встречаются соответствующие попытки, может быть несколько. В каждое место нужно будет вставить RaiseEvent.

Затем наш банковский программист должен позвонить магазинному программисту, пишущему код формы, и предупредить его, что класс теперь использует события, а значит порождать из него объекты нужно с использованием слова WithEvents:

Private WithEvents

Счет As New clsСчет

Когда программист, пишущий код формы, вставит эту строку в код формы, у него в поле, расположенном в верхней левой части окна кода, появится элемент Счет. Для создания обработчика останется только выбрать в поле, расположенном в верхней правой части окна кода, событие Не_хватает_денег этого элемента. Получится заготовка:




Начало  Назад  Вперед