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


Первый способ обработки событий: WithEvents и Handles - часть 3


        MsgBox("Сработал 2-й обработчик")

End Sub

Запустите проект. Щелкните один раз по кнопке – у вас последовательно появятся два сообщения. Таким образом, вы можете писать несколько обработчиков с разными именами для одного события, все они будут запускаться один за другим в результате наступления события.

Используем информацию о событии. Вспомним материал 14.2.2 о событиях мыши. Создадим такой обработчик вместо предыдущих:

Private Sub Обработчик_нажатия_на_кнопку(ByVal На_кого_нажали As Object,  _

ByVal Информация As MouseEventArgs) Handles b.MouseDown

        На_кого_нажали.Left = На_кого_нажали.Left + 30

        If  Информация.Button = MouseButtons.Left  Then  На_кого_нажали.Text = "Левая"

        If  Информация.Button = MouseButtons.Right  Then  На_кого_нажали.Text = "Правая"

End Sub

Обработчик обрабатывает событие b.MouseDown и пользуется информацией из объекта типа MouseEventArgs. Надпись на кнопке меняется в зависимости от того, какую клавишу мыши мы нажали.

Если вы хотите, вы можете в выражении, стоящем после слова Handles, стереть событие MouseDown, вам тут же будет предложен на выбор список всех возможных событий элемента b. Выберите подходящее другое – и обработчик будет обрабатывать уже его (о том, какие события будут подходящими, написано чуть ниже). Вы можете даже стереть b, вам тут же будет предложен на выбор список всех возможных элементов, порождающих события.

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

Dim WithEvents b1, b2, b3 As New Button

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.Controls.Add(b1)

        Me.Controls.Add(b2)

        Me.Controls.Add(b3)

End Sub

 

Private Sub Обработчик_событий_кнопки(ByVal Кнопка As Object,  _

ByVal Информация As EventArgs) Handles  b1.Click,  b2.Click,  b3.MouseEnter

        Кнопка.Left = Кнопка.Left + 30

End Sub

После запуска проекта вы сможете гонять по форме три кнопки: две щелчками, а одну – просто вхождением мышиного курсора на ее поверхность.

Не любые события можно перечислять через запятую в заголовке обработчика, а лишь те, для обработки которых подходят параметры именно тех типов, что указаны в скобках. Какие именно типы параметров подходят, вы узнаете, поставив текстовый курсор на название события (например, MouseEnter) и нажав F1. В появившемся окне помощи щелкните по слову EventHandler. Вы увидите шаблон с указанием параметров.

К сожалению, словом WithEvents нельзя объявлять массив объектов.




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



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