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


Второй способ обработки событий: Оператор AddHandler


Создайте проект без кнопок. Введите такой код:

Dim b As New Button

 

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

        Me.Controls.Add(b)     'Добавляем новую кнопку в коллекцию

        AddHandler

 

b.Click,  AddressOf  Обработчик_нажатия_на_кнопку

End Sub

 

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

        На_кого_нажали.Text = "Нажали"

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

End Sub

Поведение кнопки после запуска точно такое же, как и при 1 способе.

Пояснения: Вместо слова WithEvents  и фрагмента Handles b.Click мы пишем один оператор:

        AddHandler  b.Click,  AddressOf  Обработчик_нажатия_на_кнопку

Слово AddHandler  можно перевести как «Добавить обработчик». Слово AddressOf  указывает на процедуру-обработчик события, иначе обработчик невозможно было бы найти, ведь в заголовке самого обработчика ничего теперь не указывает на то, какое событие он должен обрабатывать. В целом оператор можно перевести так: «Добавить обработчик события b.Click, находящийся в процедуре Обработчик_нажатия_на_кнопку».

В общем, оператор AddHandler связывает событие с обработчиком. Обратите внимание, что выполняется оператор в процессе выполнения кода проекта и пока он не выполнился, обработка невозможна, то есть нажатие на кнопку ни к чему не будет приводить. Более того, связь эту можно в любое время убрать аналогичным оператором RemoveHandler, после чего кнопка прекратит реагировать на нажатия.  

К сожалению, никто нам здесь не предлагал автоматически создать заготовку обработчика.

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

        AddHandler  b.Click,  AddressOf  Еще_один_обработчик_нажатия_на_кнопку




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