Первый способ обработки событий: WithEvents и Handles - часть 2
Запишем в тело обработчика две простейшие строки:
Private Sub b_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles b.Click
b.Text = "Нажали"
b.Left = b.Left + 30
End Sub
Запустите проект. Щелкните по кнопке – она прыгнет направо на 30 пикселей и на ней появится надпись «Нажали».
Параметры обработчика. В нашем случае обработчику положено иметь два параметра: Первый (с именем sender) имеет тип Object и указывает на объект, с которым произошло событие (у нас это кнопка b). Второй параметр (с именем e) указывает на объект, который должен содержать полезную информацию о событии (правда, в нашем случае это объект типа EventArgs, который такой информации, к сожалению, не содержит).
Перепишем тело обработчика:
Private Sub b_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles b.Click
sender.Text = "Нажали"
sender.Left = sender.Left + 30
End Sub
Действие обработчика не изменилось, однако он стал более универсальным. Теперь по какому бы подходящему объекту не щелкнули, он прыгнет направо, надо только в заголовке процедуры после Handles изменить имя b на имя этого объекта.
Мы можем из соображений удобства как угодно переименовывать оба параметра в скобках и название процедуры перед скобками, действие обработчика от этого не изменится. Можно также убрать из типа параметров лишнее упоминание пространства имен System:
Private Sub Обработчик_нажатия_на_кнопку(ByVal На_кого_нажали As Object, _
ByVal Информация
As EventArgs) Handles b.Click
На_кого_нажали.Text = "Нажали"
На_кого_нажали.Left = На_кого_нажали.Left + 30
End Sub
Несколько обработчиков у одного события. Перепишите обработчик, а затем скопируйте, чуть-чуть изменив его имя и тело. Теперь у вас в коде – два обработчика:
Private Sub b_Click (ByVal sender As Object, ByVal e As EventArgs) Handles b.Click
MsgBox("Сработал 1-й обработчик")
End Sub
Private Sub b_Click1 (ByVal sender As Object, ByVal e As EventArgs) Handles b.Click