我是自定义类的新手。我有一门课叫"游戏"。在类中,我有一个名为"addGame()"的方法,它创建了一个称为"pBox"的动态图片框。创建控件后,我将执行以下操作来注册一个点击事件:
AddHandler pBox.Click, AddressOf Me.launchGame
这里是启动游戏:
Public Sub launchGame()
MsgBox(Me.name)
End Sub
问题是,"Me.name"总是最近添加的实例名称,而不是我点击的那个
根据一个建议,我也尝试了这个:
Public Sub launchGame(ByVal sender As Object)
MsgBox(sender.name)
End Sub
但表示,现在">AddHandler pBox.Click,AddressOfMe。launchGame">
方法"Public Sub launchGame(sender As Object)"没有与委托"delegate Sub EventHandler(sender As Object,e As System.EventArgs)"兼容的签名
表示:">AddHandler pBox.Click,AddressOf Me。launchGame(Me)">
AddressOf操作数必须是不带括号的方法的名称
Public Sub launchGame(ByVal sender As Object, ByVal sender as EventArgs)
MsgBox(sender.name)
End Sub
现在没有错误,但是消息框是空白的。
我认为问题在于pBox始终是最新的pictureBox控件。我基于在Visual Basic.NET和Visual C#.NET中创建控件数组(MSDN)创建了一个控件数组。
现在,我在pBoxArray类的AddNewpBox()方法中执行AddHandler。我还创建了一个列表来处理"游戏"类,正如大卫·布鲁诺所建议的那样。然后我将pictureBox"Tag"属性设置为"games"数组中游戏的索引。
所以现在我的点击处理程序如下所示,而且它似乎工作得很好。
Public Sub pBoxClick(ByVal sender As Object, e As EventArgs)
MsgBox(games(sender.tag).name)
End Sub