如何处理来自控件数组的事件 VB.net
How to Handle events from a control array VB.net
首先,大家好,我是 Whosebug 的新手,也是编程新手(第一年)。
我一直在搜索,但我没有找到任何可以回答我的问题的东西,或者我可能只是为了让新手理解答案,所以很抱歉,如果它太简单了,我看不到它!
/*我的母语不是英语*/
这是我的问题,我正在制作一个 VB 表单,其中包含 200 个必须在点击时更改或交互的图片框
我已经制作了一个包含所有这些的控件数组,如下所示:
Dim control(199) As PictureBox = Controles(control, 0)
Function Controles(ByRef control As Array, ByVal cont As Integer)
For Each pic As PictureBox In Me.Controls
control(cont) = pic
cont += 1
Next
Return control
End Function
这应该将每个图片框关联到一个数组位置,我现在的问题是如何将事件处理程序设置为在 control().click 上监视,这样无论您单击哪个框,事件 onclick 都会触发。
我知道的唯一方法是手动为每个框创建一个点击处理程序。
希望我能找到一些答案
使用 Addhandler
语句,您可以将它们全部连接到同一个例程。然后投sender对象与被点击的PB进行交互。 OfType 函数。
Private Sub LoadME() Handles Me.Load
For Each pb As PictureBox In Me.Controls.OfType(Of PictureBox)()
'add all PB click events to a event sub
AddHandler pb.Click, AddressOf pb_Click
Next
End Sub
Private Sub pb_Click(sender As Object, e As EventArgs)
Dim pb = DirectCast(sender, PictureBox)
'this is the PB that was clicked
End Sub
首先,大家好,我是 Whosebug 的新手,也是编程新手(第一年)。 我一直在搜索,但我没有找到任何可以回答我的问题的东西,或者我可能只是为了让新手理解答案,所以很抱歉,如果它太简单了,我看不到它!
/*我的母语不是英语*/
这是我的问题,我正在制作一个 VB 表单,其中包含 200 个必须在点击时更改或交互的图片框
我已经制作了一个包含所有这些的控件数组,如下所示:
Dim control(199) As PictureBox = Controles(control, 0)
Function Controles(ByRef control As Array, ByVal cont As Integer)
For Each pic As PictureBox In Me.Controls
control(cont) = pic
cont += 1
Next
Return control
End Function
这应该将每个图片框关联到一个数组位置,我现在的问题是如何将事件处理程序设置为在 control().click 上监视,这样无论您单击哪个框,事件 onclick 都会触发。
我知道的唯一方法是手动为每个框创建一个点击处理程序。
希望我能找到一些答案
使用 Addhandler
语句,您可以将它们全部连接到同一个例程。然后投sender对象与被点击的PB进行交互。 OfType 函数。
Private Sub LoadME() Handles Me.Load
For Each pb As PictureBox In Me.Controls.OfType(Of PictureBox)()
'add all PB click events to a event sub
AddHandler pb.Click, AddressOf pb_Click
Next
End Sub
Private Sub pb_Click(sender As Object, e As EventArgs)
Dim pb = DirectCast(sender, PictureBox)
'this is the PB that was clicked
End Sub