Отправляет email-рассылки с помощью сервиса Sendsay

Visual Basic.NET. Уроки

  Все выпуски  

Visual Basic.NET. Уроки


Информационный Канал Subscribe.Ru

Основы VB.NET. Уроки с сайта http://progs.biz

Рассылка №11

Основы VB.NET. Урок 6. События классов в VB.NET.

Полные версии уроков (с картинками) можно найти по адресам
Урок 6. События классов в VB.NET.

Основы VB.NET. Урок 6. События классов в VB.NET

Осталось нам посмотреть, как добавлять события в класс. События - это способность класса извещать окружение о некотором произошедшем событии. Например, у кнопки есть событие Click, наступающее, когда пользователь на кнопке щелкает.

Сейчас мы напишем наш класс Dice ("Игральная кость"). В классе будет единственный метод GetRandom, который будет возвращать случайное число от 1 до 6. Кроме того, в классе будет событие MaxNumber. Наш класс будет генерировать это событие в случае выпадения 6 очков (т. е. если метод GetRandom возвратит максимально возможное значение 6).

Вот полностью текст кода для нашего класса:

Class Dice
    Private r As New Random()
    Public Event MaxNumber()
    Public Function GetRandom()
        Dim k As Integer
        k = r.Next Mod 6 + 1
        If k = 6 Then
            RaiseEvent MaxNumber()
        End If
        Return k
    End Function
End Class

Обсудим код этого класса. Во-первых, в нем мы объявили событие MaxNumber строкой

    Public Event MaxNumber()

Событие мы, естественно, объявили как Public. У нашего события параметров нет, но могли бы и быть (в этом случае пишем их в круглых скобках через запятую).

Для того, чтобы наше событие произошло, мы используем оператор RaiseEvent:

            RaiseEvent MaxNumber()

Как вы видите, синтаксис оператора прост - после ключевого слова RaiseEvent мы просто пишем имя события (при необходимости с параметрами). По коду видно, что наше событие возникает тогда, когда на нашем кубике выпадет 6.

Добавляем теперь модуль для испытания нашего класса. Вот он:

Module Test
    Dim WithEvents d As Dice
    Public Sub Main()
        d = New Dice()
        'Бросаем кость
        Console.WriteLine(d.GetRandom())
    End Sub
    'Добавляем обработчик
    Sub MaxListener() Handles d.MaxNumber
        Console.WriteLine("Получено максимальное значение")
    End Sub
End Module

Обратите тут внимание на ряд моментов. Во-первых, мы объявляем экземпляр нашего класса с ключевым словом WithEvents. Во-вторых, мы должны в нашей программе добавить обработчик для этого события. В этом обработчике мы можем написать все, что угодно - это дело уже нашей программы, а не класса. Класс только извещает программу, что в нем произошло некоторое событие, а программа уже сама определяет, что делать при наступлении события. Это мы делаем в строках

    Sub MaxListener() Handles d.MaxNumber
        Console.WriteLine("Получено максимальное значение")
    End Sub

Как вы видите, обработчик представляет из себя процедуру, в которую мы внесли некоторое добавление - а именно указали, что она есть обработчик для события MaxNumber экземпляра d нашего класса. Это мы делаем посредством ключевого слова Handles:

Sub MaxListener() Handles d.MaxNumber

В этом обработчике, разумеется, можно написать все, что угодно (абсолютно аналогично обработчику щелчка на кнопке - что надо, то пишем).

Добавить заготовку для обработчика события можно следующим способом. В левом combobox'е окна кода выбираем имя переменной класс (d в нашем случае), а в правом - имя события (MaxNumber в нашем случае).

Ну и полученную заготовку вставляем нужный нам код.

Запускаем программу. Чаще всего результатом программы будет просто число (которые выпадет на нашем кубике), но если нам повезет и на кубике выпадет 6, то кроме шестерки на экране покажеться надпись "Получено максимальное значение".

Наверх
Рассылки Subscribe.Ru
Русский_Проект: Изучение Visual Basic
Изучение основ Visual Basic-алгоритмы, функции, игры, шутки, советы.

Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное