Если вы используете Handles
ключевое слово, которое используется по умолчанию, типичный способ для обработки события из элементов управления, вы можете добавить несколько имен событий в пункт Handles
, например:
Private Sub OnClick(sender As Object, e As EventArgs) Handles PictureBox1.Click, PictureBox2.Click, PictureBox3.Click
' Handles click events from PictureBox1, PictureBox2, and PictureBox3
End Sub
В качестве альтернативы, вы можете объявить метод обработчика событий без пункта Handles
, а затем вручную прикрепить его к событиям себя, как это:
Private Sub OnClick(sender As Object, e As EventArgs)
' ...
End Sub
' ...
AddHandler PictureBox1.Click, AddressOf OnClick
AddHandler PictureBox2.Click, AddressOf OnClick
AddHandler PictureBox3.Click, AddressOf OnClick
Или, если у вас есть список элементов управления изображением коробки, вы можете добавить обработчик событий в цикле, как это:
Dim myPictureBoxes() As PictureBox = {PictureBox1, PictureBox2, PictureBox3}
For Each i As PictureBox in myPictureBoxes
AddHandler i.Click, AddressOf OnClick
Next
Или, вы можете получить доступ к ним из Controls
коллекции вашей формы по имени:
For i As Integer = 1 to 30
Dim c As Control = Me.Controls("PictureBox" & i.ToString())
AddHandler c.Click, AddressOf OnClick
Next
Помните, что если вы вручную вызываете AddHandler
, вам необходимо также позвонить RemoveHandler
, чтобы позже отсоединить обработчик событий.
На первый взгляд кажется странным, что у него так много картинных ящиков. Возможно, вам захочется рассмотреть возможность создания собственного контента в одном элементе управления или динамическую загрузку элементов управления во время выполнения.
Возможный дубликат [Как обрабатывать несколько событий с одним и тем же Sub] (http://stackoverflow.com/questions/13323397/how-to-handle-multiple-click-events-with-same-sub) – Plutonix