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


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


Задача. Давайте смоделируем такую ситуацию: На вашем счете в банке лежит какая-то сумма. Вы приходите в магазин и хотите расплатиться за покупку кредитной карточкой, открытой на этот счет в банке. Вы отдаете карточку кассиру, тот направляет в банк приказ снять с вашего счета нужную сумму, приказ выполняется, кассир вам карточку возвращает. Все, покупка сделана. Задача программиста состоит в том, чтобы предусмотреть запрет на выполнение этой операции, если вы накупили товаров на сумму, превышающую ту, что у вас на счете. При этом у кассира должно возникнуть сообщение «На счете не хватает денег».

Приступим к решению. Магазин и банк относятся к тем фирмам, которые предпочитают хранить свою финансовую информацию в секрете друг от друга. Поэтому пусть магазин будет у нас формой, а для банка создадим свой класс. Класс будет очень простой, он ограничится вашим счетом и его обработкой.

Создайте проект. Разместите на форме текстовое поле, кнопку и метку. Создайте в проекте класс clsСчет. В этом классе будет присутствовать переменная Сумма_на_счете, объявленная Private, чтобы в магазине случайно не раскрыли тайну вклада клиента. Кроме этого в классе будет присутствовать метод Снятие_со_счета, смысл которого ясен из названия. Кассир вводит в текстовое поле сумму покупок, затем нажатием на кнопку формы запускает упомянутый метод, метод проверяет, хватает ли денег на счете, и если да, то уменьшает эти деньги на сумму покупок, а если нет, то порождает некое событие («передает сигнал» – RaiseEvent). На форме уже ждет наготове обработчик этого события. Он его воспринимает («принимает сигнал») и начинает выполняться, в результате чего метка на форме покажет текст «На счете не хватает денег».

С учетом сказанного разберитесь в приведенном ниже коде, а новинки я поясню:

Форма:

Private WithEvents

Счет As New clsСчет

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Счет.Снятие_со_счета(Val(TextBox1.Text))

End Sub




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



Книжный магазин