VB.NET по умолчанию не использует управляющие массивы. Это потому, что события обрабатываются не так, как VB6.
Если я правильно помню, вы бы написали код для управляющего массива, такого как массив CommandButton
.
Private Sub Buttons_Click(index As Integer)
Select Case index
Case 1
'write some code here'
End Select
End Sub
Затем компилятор VB6 проанализирует имя каждого сабвуфера в вашем файле и назначит их соответствующему событию элемента управления. Таким образом, вышеприведенная подпрограмма будет прикрепляться к каждой кнопке в вашей форме, называемой «Кнопки», и вы сможете определить кнопку, на которую нажали, проверив параметр index.
В VB.NET события «привязаны» к элементам управления по-разному.
Это делается вручную с помощью оператора AddHandler
или автоматически с использованием ключевого слова Handles
.
Когда вы назначаете события элементам управления из конструктора форм, в среде IDE используется ключевое слово Handles
, чтобы подключить каждый из элементов управления к их обработчикам событий. Таким образом, вы получите что-то вроде этого:
Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles Button.Click
'your code goes here'
End Sub
При использовании этого метода вам не нужен массив элементов управления, как в VB6. Вы можете просто подключить больше нажатий кнопок или, в этом отношении, любой щелчок элемента управления, добавив в конец оператора примерно так:
Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles _
Button1.Click, Button2.Click, Button3.Click, ListBox.Click
'your code goes here'
End Sub
Как видно, вы просто добавляете имя элемента управления (например, Button2 ) и затем добавляете его с помощью .Click
, чтобы «привязать» событие нажатия элемента управления к подпрограмме.
Возникает вопрос: как узнать, какой элемент управления (кнопка) был нажат?
Ответ довольно прост, проверьте параметр sender
.
В .NET обычно элемент управления, вызывающий событие, всегда находится в параметре sender
. Итак, основываясь на приведенном выше коде, у нас будет что-то вроде этого:
Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles _
Button1.Click, Button2.Click, Button3.Click, ListBox.Click
If sender Is Button1 Then
'do something'
ElseIf sender Is Button2 Then
'do another thing'
ElseIf sender Is Button3 Then
'do yet another thing'
Else
'do something different for the ListBox'
End If
End Sub
Если вы пошли так далеко и поняли это, вы начнете понимать, почему мы больше не используем массивы управления в VB.NET или, в этом отношении, .NET вообще.
Сообщите мне, если у вас есть еще вопросы. Ура!